我正在试着用c#写一个程序。它的一部分需要能够检测一个文件(主要是dll,但也有一些其他文件)是否已注册。然后用户必须能够选择他/她想要注册的一个(或多个)文件,并且程序必须注册它。它不应该只是注册所有的文件,用户必须决定注册哪个文件
所以我主要想知道如何检测它是否已注册,以及如何注册它
预先感谢您的帮助
编辑:好的,那么如何检测是否从C#程序中注册了.net程序集呢?
发布于 2011-10-21 20:27:23
你应该定义“被注册”是什么意思。标准DLL文件不会在任何地方注册。(这就是为什么可以看到被称为"DLL地狱“的混乱。)
或者是COM?
COM组件是使用regsvr32.exe注册的。你可以调用它来注册你的文件。这是最简单的方法。如果出于某种原因,您认为不需要这种简单方法,您可以手动执行此操作-阅读COM文档,了解有关组件如何注册自身的信息。(您将文件加载到您的地址空间中,并通过调用其中的注册函数让它进行自我注册。)
如果你不知道里面是什么组件,我不知道如何合法地检测一个特定的文件是否注册为COM组件宿主。但是,如果您知道组件,您可以尝试创建组件。如果创建失败,则该文件尚未注册。
或者它们是.NET程序集文件?
在.NET中,你不能随意“注册”文件,你需要管理员权限。(该进程必须在提升模式下运行。)但同样,您通常无需注册即可使用这些.NET DLL文件。通常,只有信任良好的核心系统组件才会在GAC中注册。我认为这可能是一个安全漏洞,如果你试图将你的私人文件添加到GAC中。因此,我会问,在那里注册它们是否真的如此重要。
https://stackoverflow.com/questions/7849293
复制相似问题