C#默认以管理员身份运行程序实现代码


在C#中,直接通过程序代码来让程序默认以管理员身份运行是不可行的,因为程序的运行权限是由操作系统在程序启动时决定的。但是,你可以通过一些方法来间接实现这个需求:

1. **修改程序的快捷方式或可执行文件属性**:

- 你可以为程序的快捷方式设置“以管理员身份运行”属性。这可以通过右击快捷方式,选择“属性”,然后在“兼容性”标签页中勾选“以管理员身份运行此程序”来实现。

- 或者,你可以直接修改可执行文件的属性(但这通常不推荐,因为它会影响所有使用该文件的方式),但这实际上是在文件或快捷方式的属性中做的,而不是通过C#代码。

2. **使用应用程序清单(Manifest)**:

- 你可以为你的C#程序创建一个应用程序清单(Manifest),并在其中指定`requestedExecutionLevel`为`requireAdministrator`。这样,当用户尝试运行你的程序时,系统会提示用户以管理员身份运行。

下面是一个示例的Manifest文件(`app.manifest`),你可以将其添加到你的C#项目中:


   <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
   <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
     <assemblyIdentity version="1.0.0.0"
                       processorArchitecture="*"
                       name="YourApplication.app"
                       type="win32"/>
     <description>Your application description here.</description>

     <!-- Identify the application as requiring administrative privileges -->
     <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
       <requestedExecutionLevel level="requireAdministrator" uiAccess="false"/>
     </requestedPrivileges>

     <!-- This section enables COM Interop for the application -->
     <comInterop/>

     <!-- This section enables Windows Common Controls for the application -->
     <dependency>
       <dependentAssembly>
         <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0"
                           processorArchitecture="*" publicKeyToken="6595b64144ccf1df" language="*"/>
       </dependentAssembly>
     </dependency>
   </assembly>
   

将这个文件添加到你的项目中,并确保它被包含在输出中(在Visual Studio中,你可以右键点击文件,选择“属性”,然后在“生成操作”中选择“内容”,并勾选“始终复制”或“如果较新则复制”)。

请注意,直接通过C#代码来“请求”以管理员身份运行程序是不可能的,因为这会涉及到操作系统级别的权限管理。但是,通过使用上述方法,你可以间接地达到这个目的。