C# 在C中设置文件的UAC设置

C# 在C中设置文件的UAC设置,c#,permissions,uac,patch,administrative,C#,Permissions,Uac,Patch,Administrative,我想授予客户端计算机上已存在的文件.exe权限,以便始终使用管理权限执行 请注意,我要授予权限的文件已在目标计算机上。我想通过另一个用c编写的程序来更改该文件的权限,该程序拥有执行所有操作的管理权限 请告诉我怎么做 我正在使用这个代码 System.Security.AccessControl.FileSecurity fs = File.GetAccessControl(@"c:\inam.exe"); FileSystemAccessRule fsar = n

我想授予客户端计算机上已存在的文件.exe权限,以便始终使用管理权限执行

请注意,我要授予权限的文件已在目标计算机上。我想通过另一个用c编写的程序来更改该文件的权限,该程序拥有执行所有操作的管理权限

请告诉我怎么做 我正在使用这个代码

        System.Security.AccessControl.FileSecurity fs = File.GetAccessControl(@"c:\inam.exe");
        FileSystemAccessRule fsar = new FileSystemAccessRule("Everyone", FileSystemRights.FullControl, AccessControlType.Allow);
        fs.AddAccessRule(fsar);
        File.SetAccessControl(@"c:\inam.exe", fs);
此代码将正确更改权限,但在执行此代码后执行inam.exe时,UAC不会出现,并且inam.exe无法执行管理操作


实际上,我已经在10000多个客户端上部署了一个应用程序,所以我想发布一个补丁来解决管理权限问题。

使用管理权限执行不是文件权限

这通常通过添加到EXE中的Win32资源或作为外部清单进行配置。此清单文件可以说明应用程序是否需要运行提升版


我不完全确定Windows将此程序作为管理员兼容性设置运行到何处。

以管理权限执行不是文件权限

这通常通过添加到EXE中的Win32资源或作为外部清单进行配置。此清单文件可以说明应用程序是否需要运行提升版

我不完全确定Windows将运行此程序作为管理员兼容性设置存储在何处。

构建一个清单文件,在其他位置查看,并将其命名为Whatever.exe.manifest,并将其与exe放在同一文件夹中。nanifest应将requestedExecutionLevel设置为requireAdministrator。一切就绪

如果您拥有另一个exe,则可以在构建清单时将其嵌入。在VisualStudio2008及更高版本中,这几乎是微不足道的。请参阅“应用程序”选项卡,然后单击“清单”下拉列表。附近有指示。另外,当您使用VS 2008向项目中添加清单时,您不必键入所有XML,只需从为您生成的注释中复制相应的请求执行级别。

构建清单文件,在其他位置查看并将其命名为which.exe.manifest,并将其与exe放在同一文件夹中。nanifest应将requestedExecutionLevel设置为requireAdministrator。一切就绪


如果您拥有另一个exe,则可以在构建清单时将其嵌入。在VisualStudio2008及更高版本中,这几乎是微不足道的。请参阅“应用程序”选项卡,然后单击“清单”下拉列表。附近有指示。另外,当您使用VS 2008向项目添加清单时,您不必键入所有XML,只需从为您生成的注释中复制相应的请求执行级别。

使用清单文件是最佳方法,但另一种方法是通过设置简单的注册表项,以编程方式将RunThis程序设置为管理员标志,即在EXE属性的“兼容性”选项卡中找到的选项。如果希望设置分别为每用户或每台机器,则需要在其中一个键下创建字符串值REG_SZ:

HKEY\U CURRENT\U USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers

HKEY\U LOCAL\U MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers


如果路径包含空格,则值的名称必须是可执行文件的完整路径,不要用引号括住路径,并且值的数据必须包含字符串RUNASADMIN。

使用清单文件是最好的方法,但另一种方法是通过设置简单的注册表项,以编程方式将RunThis程序设置为管理员标志,即在EXE属性的“兼容性”选项卡中找到的选项。如果希望设置分别为每用户或每台机器,则需要在其中一个键下创建字符串值REG_SZ:

HKEY\U CURRENT\U USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers

HKEY\U LOCAL\U MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers


如果路径包含空格,则值的名称必须是可执行文件的完整路径,不要用引号括住路径,并且值的数据必须包含字符串RUNASADMIN。

可能的重复不是重复,但可能包含可能的答案,尤其是在问题中。可能的重复不是重复,但可能包含一个可能的答案,尤其是在问题中。