我无法在办公室注册COM .dll。
操作系统 - 64位Windows 7;
dll的目标框架是4.0;
Office是32位Word 2007 (x86 Word 2007 )
Addin设置低级键盘钩并使用以下非托管方法
[DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
private static extern IntPtr GetModuleHandle(string lpModuleName);
[DllImport("user32.dll", SetLastError = true)]
private static extern bool UnhookWindowsHookEx(IntPtr hhk);
[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
private static extern IntPtr SetWindowsHookEx(int idHook, HookProcedure lpfn, IntPtr hMod, uint dwThreadId);
[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
private static extern IntPtr CallNextHookEx(IntPtr hhk, int nCode, IntPtr wParam, IntPtr lParam);
[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
private static extern IntPtr GetForegroundWindow();
显示我试过的所有组合。 注意:
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\RegAsm.exe "my.dll" /codebase
C:\Windows\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe "my.dll" /codebase
HKEY_CURRENT_USER\Software\Microsoft\Office\Word\Addins\ProgID
HKEY_CURRENT_USER\Software\Wow6432Node\Microsoft\Office\Word\Addins\ProgID
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Office\Word\Addins\ProgID
当目标cpu位数!= RegAsm bitness RegAsm命令失败时,我不会在列表中显示这样的obvoius条目。
target = 32,regasm = 32,registry = WOW(CU),output = no output。 Word 2007没有看到WOW-CU?
target = x86-64,regasm = 64,registry = WOW(CU),output = no output。 Word 2007没有看到WOW-CU?
target = 32,regasm = 32,registry = Normal(CU),output = BadImageFormatException
但是addin有效!
target = x86-64,regasm = 64,registry = Normal(CU),output = Dll Path is not found
。
target = 32,regasm = 32,registry = WOW(LM),output = BadImageFormatException
但是addin有效!
target = x86-64,regasm = 64,registry = WOW(LM),output = BadImageFormatException
我听说Office 2007不支持所有用户(本地计算机)的注册,但它看起来像5
和6
所示。我的意思是 Word可以在LM中看到注册表WOW节点。相反,当前用户中的WOW6432节点被忽略为1
和2
。因此,Word 无法在CU中看到WOW节点。
我如何注册我的插件? 3
和5
使其有效,但`BadImageFormatException
非常烦人,我想摆脱它。