首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >regasm /codebase起作用,但使用regasm /codebase /regfile生成的文件不起作用

regasm /codebase起作用,但使用regasm /codebase /regfile生成的文件不起作用
EN

Stack Overflow用户
提问于 2013-04-05 20:48:05
回答 2查看 3.8K关注 0票数 1

我有一个适用于32位和64位体系结构的COM可见dll,用于将菜单项添加到windows资源管理器上下文菜单中。使用"regasm myassembly.dll /codebase“注册dll并查看新的菜单项。太棒了。注销也可以正常工作。

现在,我想创建一个.reg文件,以便可以将菜单项添加到非开发计算机。我使用的是"regasm myassembly.dll /codebase /regfile“,它会生成一个可以用regedit导入的reg文件。问题是,在导入.reg之后,我看不到菜单图标。为什么注册可能会失败?请注意,我使用的是64位系统。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-04-05 22:07:02

注册.NET扩展需要编写比注册[ComVisible] shell程序集通常所需的注册表项更多的注册表项。

您还必须使用资源管理器读取的write the keys来发现扩展。

你根本没有提到你是如何处理的,这通常需要一个自定义的[ComRegisterFunction]。但可以肯定的是,.reg文件不会包含这些键,因为自定义注册函数需要运行代码。

票数 2
EN

Stack Overflow用户

发布于 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)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15834410

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档