2013-05-16 42 views
0

我有DLL和BHO IE插件。来自C#的Regasm BHO代码

而我使用“regasm.exe/codebase myBHO.dll”来注册我的dll。

是否有任何C#代码到regasm我的DLL在Windows应用程序?

+0

这是一个安装程序的工作。例如,VS Setup项目支持它。避免编写自己的安装程序。但是如果你坚持,那么你可以使用RegistrationServices.RegisterAssembly()。请注意,UAC标高是必需的。 –

+0

谢谢,但我不Khow如何做到这一点在VS安装项目,当我设置“注册”属性我的DLL到“vsdraCOM”不工作 –

回答

2

为此创建一个专用安装程序。

对于从Visual Studio快速调试周期,像这样设置一些生成事件:

"C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\NETFX 4.0 Tools\x64\gacutil.exe" /f /i $(TargetDir)$(TargetFileName) 
"%WINDIR%\Microsoft.NET\Framework64\v4.0.30319\RegAsm.exe" /unregister $(TargetDir)$(TargetFileName) 
"%WINDIR%\Microsoft.NET\Framework64\v4.0.30319\RegAsm.exe" $(TargetDir)$(TargetFileName) /regfile:$(TargetFileName)64.reg 
"%WINDIR%\Microsoft.NET\Framework64\v4.0.30319\RegAsm.exe" /codebase $(TargetDir)$(TargetFileName) 

"C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\NETFX 4.0 Tools\gacutil.exe" /f /i $(TargetDir)$(TargetFileName) 
"%WINDIR%\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe" /unregister $(TargetDir)$(TargetFileName) 
"%WINDIR%\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe" $(TargetDir)$(TargetFileName) /regfile:$(TargetFileName)32.reg 
"%WINDIR%\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe" /codebase $(TargetDir)$(TargetFileName) 

然后,定义一个[ComRegisterFunction],如:

[ComRegisterFunction] 
public static void RegisterBHO(Type type) 
{ 
    RegistryKey key; 
    using (key = Registry.LocalMachine.CreateSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Browser Helper Objects")) 
    { 
     RegistryKey bhoKey; 
     using (bhoKey = key.CreateSubKey(typeName)) 
     { 
     bhoKey.SetValue(string.Empty, "My Awesone IE Plugin"); 
     bhoKey.SetValue("NoExplorer", 1, RegistryValueKind.DWord); 
     } 
    }  
} 
+0

这对我有帮助。我必须将key.CreateSubKey行更改为key.CreateSubKey(type.GUID.ToString(“B”))。 – Scott