Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 检测文件是否已注册并能够注册_C#_Registry_Detect_Dllregistration - Fatal编程技术网

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

C# 检测文件是否已注册并能够注册,c#,registry,detect,dllregistration,C#,Registry,Detect,Dllregistration,我正试图用c写一个程序。它的一部分需要能够检测一个文件是否主要是DLL,但其他一些文件是否已注册。然后用户必须能够选择他/她想要注册的一个或多个文件,并且程序必须注册它。它不应该只是注册所有的文件,用户必须决定注册哪个文件 因此,我主要想知道如何检测它是否已注册,以及如何注册它 提前感谢您的帮助 编辑:好的,那么如何检测.net程序集是否从C程序中注册?您应该定义注册的含义。标准DLL文件未在任何位置注册。这就是为什么我们可以看到被称为地狱的混乱 还是它是COM COM组件使用regsvr32.

我正试图用c写一个程序。它的一部分需要能够检测一个文件是否主要是DLL,但其他一些文件是否已注册。然后用户必须能够选择他/她想要注册的一个或多个文件,并且程序必须注册它。它不应该只是注册所有的文件,用户必须决定注册哪个文件

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

提前感谢您的帮助


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

您应该定义注册的含义。标准DLL文件未在任何位置注册。这就是为什么我们可以看到被称为地狱的混乱

还是它是COM

COM组件使用regsvr32.exe注册。你可以调用它来注册你的文件。这是最简单的方法。如果您出于某种原因认为不需要这种简单的方法,您可以手动执行此操作—阅读COM文档,了解组件如何注册自身。您将文件加载到地址空间中,并通过调用其中的注册函数让它自己注册

如果您不知道其中包含什么组件,我不知道如何合法地检测特定文件是否注册为COM组件主机。但是,如果您知道该组件,您可以尝试创建该组件。如果创建失败,则文件尚未注册

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


在.NET中,不允许您随意注册文件,您需要管理员权限。进程必须在提升模式下运行。但同样,您通常在未注册的情况下使用这些.NET DLL文件。通常只有受信任的核心系统组件才在GAC中注册。我认为,如果你试图将你的私人文件添加到GAC中,这可能是一个安全漏洞。所以我想问,让他们在那里注册是否真的很重要。

你应该定义注册意味着什么。标准DLL文件未在任何位置注册。这就是为什么我们可以看到被称为地狱的混乱

还是它是COM

COM组件使用regsvr32.exe注册。你可以调用它来注册你的文件。这是最简单的方法。如果您出于某种原因认为不需要这种简单的方法,您可以手动执行此操作—阅读COM文档,了解组件如何注册自身。您将文件加载到地址空间中,并通过调用其中的注册函数让它自己注册

如果您不知道其中包含什么组件,我不知道如何合法地检测特定文件是否注册为COM组件主机。但是,如果您知道该组件,您可以尝试创建该组件。如果创建失败,则文件尚未注册

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


在.NET中,不允许您随意注册文件,您需要管理员权限。进程必须在提升模式下运行。但同样,您通常在未注册的情况下使用这些.NET DLL文件。通常只有受信任的核心系统组件才在GAC中注册。我认为,如果你试图将你的私人文件添加到GAC中,这可能是一个安全漏洞。所以我想问,让他们在那里注册是否真的很重要。

你必须定义注册意味着什么。标准DLL未在任何位置注册。这就是为什么我们可以看到称为DLL地狱的混乱。如果您正在谈论在GAC中注册.net程序集,您可以尝试使用cmdOK中的gacutil,那么如何检测是否从C程序中注册了.net程序集?您必须定义注册意味着什么。标准DLL未在任何位置注册。这就是为什么我们可以看到称为DLL地狱的混乱。如果您正在谈论在GAC中注册.net程序集,您可以尝试使用cmdOK中的gacutil,那么如何检测.net程序集是否从C程序中注册?抱歉,.net程序集文件。但我明白你的意思。我正在扫描的一些文件需要为使用它们的程序注册才能工作。但是如果它太不安全,那么可能需要扫描文件的人必须手动进行扫描,以确保安全。但我认为,也许他/她至少应该能够检测到它,通过这种方式,谁使用过这个程序将拥有管理员权限、.net汇编文件。但我明白你的意思。我正在扫描的一些文件需要为使用它们的程序注册才能工作。但是如果它太不安全,那么可能需要扫描文件的人必须手动进行扫描,以确保安全。但我想,也许他/她至少应该能够检测到,通过这种方式,谁使用过这个程序将拥有管理员权限