Пример #1
0
        internal COMCLSIDEntry(COMRegistry registry, Guid clsid, COMPackagedEntry packageEntry,
                               COMPackagedClassEntry classEntry) : this(registry, clsid)
        {
            Source    = COMRegistryEntrySource.Packaged;
            Name      = classEntry.DisplayName;
            PackageId = packageEntry.PackageId;

            Dictionary <COMServerType, COMCLSIDServerEntry> servers = new Dictionary <COMServerType, COMCLSIDServerEntry>();

            if (!string.IsNullOrWhiteSpace(classEntry.DllPath))
            {
                servers.Add(COMServerType.InProcServer32, new COMCLSIDServerEntry(COMServerType.InProcServer32, classEntry.DllPath, classEntry.Threading));
            }

            if (packageEntry.Servers.ContainsKey(classEntry.ServerId))
            {
                COMPackagedServerEntry server = packageEntry.Servers[classEntry.ServerId];
                AppID = server.SurrogateAppId;
                string serverPath  = "<APPID HOSTED>";
                string commandLine = string.Empty;
                if (AppID == Guid.Empty)
                {
                    serverPath  = server.Executable;
                    commandLine = server.CommandLine;
                }
                servers.Add(COMServerType.LocalServer32, new COMCLSIDServerEntry(COMServerType.LocalServer32, serverPath, commandLine));
            }

            Servers    = new ReadOnlyDictionary <COMServerType, COMCLSIDServerEntry>(servers);
            Categories = classEntry.ImplementedCategories.AsReadOnly();
        }
Пример #2
0
 internal COMProgIDEntry(COMRegistry registry,
                         string progid, Guid clsid, COMPackagedClassEntry classEntry) : this(registry)
 {
     Clsid  = clsid;
     ProgID = progid;
     Name   = classEntry.DisplayName;
     Source = COMRegistryEntrySource.Packaged;
 }