ILocalRegistry4 接口
建立本地注册表相对 Visual Studio 注册表项。通过 SLocalRegistry (SID_SLocalRegistry) 服务来获取接口的实例。
命名空间: Microsoft.VisualStudio.Shell.Interop
程序集: Microsoft.VisualStudio.Shell.Interop.9.0(在 Microsoft.VisualStudio.Shell.Interop.9.0.dll 中)
语法
声明
<GuidAttribute("5C45B909-E820-4ACC-B894-0A013C6DA212")> _
<InterfaceTypeAttribute()> _
Public Interface ILocalRegistry4
[GuidAttribute("5C45B909-E820-4ACC-B894-0A013C6DA212")]
[InterfaceTypeAttribute()]
public interface ILocalRegistry4
ILocalRegistry4 类型公开以下成员。
方法
名称 | 说明 | |
---|---|---|
GetLocalRegistryRootEx | 返回本地注册表根。 | |
RegisterClassObject | 使用 COM 加载类工厂并注册它。 | |
RegisterInterface | 注册线的接口使用本地注册的代理。 | |
RevokeClassObject | 取消已注册的类的对象。 |
页首
备注
具有 IVsLocalRegistry4 的两个主要用途,如下所示:
广告本地不否则必须知道该本地注册表的 COM 对象或存根代理进程,线程间调用。
获取在某些非管理员方案能重定向的本地注册表路径 (HKEY 和根)。
使用 CoCreateInstance,对通常创建类的对象,注册为 CreateInstance执行方式的 AppID 本地注册表的类工厂。这与讲不同于 " HKEY_CLASSES_ROOT 下的全局注册, InprocServer32 是子键而不是值。
HKEY_LOCAL_MACHINE\<RegRoot>\CLSID\{your-CLSID}
InprocServer32 REG_SZ yourclassfactory.dll
调用 RegisterClassObject 方法使用 COM 加载此类工厂并注册它使用 CoCreateInstance,,以便可以从同一线程以后访问。
对 proxy 存根,此结构如下可以注册 AppID 本地注册表的 PS 工厂。
HKEY_LOCAL_MACHINE\<RegRoot>\CLSID\{your-ProxyStubCLSID}
InprocServer32 REG_SZ yourproxy.dll
HKEY_LOCAL_MACHINE\<RegRoot>\Interface\{private-IID}
AutoRegister REG_DWORD {0 or 1}
HKEY_LOCAL_MACHINE\<RegRoot>\Interface\{private-IID}\ProxyStubClsid32
(Default) REG_SZ {your-ProxyStubCLSID}
就地注册表项,对 RegisterInterface 的调用在调用线程上仅填充代理 DLL 并将其注册作为封送拆收器该接口的。因此,对于帮助,请处理具有,则必须对必须具有接口的每个线程的 RegisterInterface。无法注销程序。为提高效率,请避免多次调用 RegisterInterface 在同一线程上执行相同的接口。确保唯一性的一种方法是调用 CoInitialize 或 OleInitialize 后的 RegisterInterface。
AutoRegister 值是可选的,并且应谨慎使用。大多数接口具有广泛的实现所有者,并实现代码通常可负责调用 RegisterInterface,在所有客户端代码可以访问该代理之前的。但是,有些接口不具有广泛的所有者,并可能必须用启动的平台注册。如果 AutoRegister 值表示和非零,则平台自动将注册在主线程关联的代理,则所有包或局部类工厂之前。,因为它会影响启动性能,请小心使用该机制。