2013-05-16 51 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