检测文件是否已注册并能够注册

时间:2011-10-21 12:19:52

标签: c# registry detect dllregistration

我正在尝试用c#编写程序。部分内容需要能够检测文件(主要是dll,还有其他一些)是否已注册。然后,用户必须能够选择他/她想要注册的文件(或文件),并且程序必须注册它。它不应该只是注册所有文件,用户必须决定注册哪些文件

所以主要是我想知道如何检测它是否已注册,以及如何注册

提前感谢您的帮助

编辑:好的,那么如何检测是否在C#程序中注册了.net程序集?

1 个答案:

答案 0 :(得分:1)

您应该定义“注册”的含义。标准DLL文件未在任何地方注册。 (这就是为什么可以看到混乱称为“DLL地狱”。)

或者是COM?

使用regsvr32.exe注册COM组件。您可以调用它来注册您的文件。这是最简单的方法。如果由于某种原因认为您不想要这种简单的方法,您可以手动执行 - 阅读有关组件如何注册自身的信息的COM文档。 (您将文件加载到地址空间中,并通过调用其中的注册函数让它自行注册。)

如果您不知道哪个组件在里面,我不知道如何合法地检测特定文件是否注册为COM组件主机。但是,如果您知道该组件,则可以尝试创建该组件。如果创建失败,则文件尚未注册。

或者它们是.NET程序集文件吗?

在.NET中,您不能随意“注册”文件,您需要管理员权限。 (该进程必须以提升模式运行。)但是,您通常无需注册即可使用这些.NET DLL文件。通常,只有受信任的核心系统组件才会在GAC中注册。我认为如果您尝试将您的私人文件添加到GAC中,这可能是一个安全漏洞。所以我会问,让他们在那里注册是否非常重要。