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 值表示和非零,则平台自动将注册在主线程关联的代理,则所有包或局部类工厂之前。,因为它会影响启动性能,请小心使用该机制。

请参见

参考

Microsoft.VisualStudio.Shell.Interop 命名空间