我有一个适用于32位和64位体系结构的COM可见dll,用于将菜单项添加到windows资源管理器上下文菜单中。使用"regasm myassembly.dll /codebase“注册dll并查看新的菜单项。太棒了。注销也可以正常工作。
现在,我想创建一个.reg文件,以便可以将菜单项添加到非开发计算机。我使用的是"regasm myassembly.dll /codebase /regfile“,它会生成一个可以用regedit导入的reg文件。问题是,在导入.reg之后,我看不到菜单图标。为什么注册可能会失败?请注意,我使用的是64位系统。
发布于 2013-04-05 22:07:02
注册.NET扩展需要编写比注册[ComVisible] shell程序集通常所需的注册表项更多的注册表项。
您还必须使用资源管理器读取的write the keys来发现扩展。
你根本没有提到你是如何处理的,这通常需要一个自定义的[ComRegisterFunction]。但可以肯定的是,.reg文件不会包含这些键,因为自定义注册函数需要运行代码。
发布于 2013-04-05 22:00:12
你应该知道这是一个非常非常糟糕的主意。请阅读这篇关于这个主题的经典文章。
http://blogs.msdn.com/b/oldnewthing/archive/2006/12/18/1317290.aspx
然后这个最新的更新:
http://blogs.msdn.com/b/oldnewthing/archive/2013/02/22/10396079.aspx
即使您坚持要尝试这样做(或者如果程序集的用途不是外接程序),尝试使用.reg文件来注册程序集仍然是一个坏主意。
除了COM注册之外,还需要做更多的事情才能使程序集正常工作。最有可能的情况是,您必须将其添加到GAC中,以便.NET能够找到它。此外,未来版本的.NET可能需要在注册表中添加更多信息或不同的信息。即使在今天(我怀疑),REGASM可能需要在不同的环境中放置不同的信息(x86与x64)。
https://stackoverflow.com/questions/15834410
复制相似问题