本文概述
- 1.验证你的应用程序是否具有应用程序清单
- 2.请求管理员权限
在本文中, 我们将简要介绍如何在基于C#的WinForms应用程序执行开始时请求管理员权限。
1.验证你的应用程序是否具有应用程序清单 第一步, 你需要验证你的应用程序是否确实在根目录中包含清单:
文章图片
如果不存在, 则必须按照以下说明创建它。
如果没有, 请使用默认信息创建它
【如何在任何环境下强制基于C#的WinForms应用程序以管理员权限运行()】如果你没有在应用程序中注册提到的清单, 请继续创建它。在Visual Studio中打开你的项目, 然后右键单击你的项目, 单击” 添加和新建项目” :
文章图片
在新对话框中, 从Visual C#项目中选择应用程序清单文件:
文章图片
这将在应用程序的根目录(即app.manifest)中创建一个内容相似的文件:
<
?xml version="1.0" encoding="utf-8"?>
<
assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1">
<
assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
<
trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
<
security>
<
requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
<
!-- UAC Manifest OptionsIf you want to change the Windows User Account Control level replace the requestedExecutionLevel node with one of the following.<
requestedExecutionLevellevel="asInvoker" uiAccess="false" />
<
requestedExecutionLevellevel="requireAdministrator" uiAccess="false" />
<
requestedExecutionLevellevel="highestAvailable" uiAccess="false" />
Specifying requestedExecutionLevel element will disable file and registry virtualization. Remove this element if your application requires this virtualization for backwardscompatibility.-->
<
requestedExecutionLevel level="asInvoker" uiAccess="false" />
<
/requestedPrivileges>
<
/security>
<
/trustInfo>
<
compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
<
application>
<
!-- A list of the Windows versions that this application has been tested onand is designed to work with. Uncomment the appropriate elementsand Windows will automatically select the most compatible environment. -->
<
!-- Windows Vista -->
<
!--<
supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}" />
-->
<
!-- Windows 7 -->
<
!--<
supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}" />
-->
<
!-- Windows 8 -->
<
!--<
supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}" />
-->
<
!-- Windows 8.1 -->
<
!--<
supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}" />
-->
<
!-- Windows 10 -->
<
!--<
supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" />
-->
<
/application>
<
/compatibility>
<
!-- Indicates that the application is DPI-aware and will not be automatically scaled by Windows at higherDPIs. Windows Presentation Foundation (WPF) applications are automatically DPI-aware and do not need to opt in. Windows Forms applications targeting .NET Framework 4.6 that opt into this setting, should also set the 'EnableWindowsFormsHighDpiAutoResizing' setting to 'true' in their app.config. -->
<
!--<
application xmlns="urn:schemas-microsoft-com:asm.v3">
<
windowsSettings>
<
dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
true<
/dpiAware>
<
/windowsSettings>
<
/application>
-->
<
!-- Enable themes for Windows common controls and dialogs (Windows XP and later) -->
<
!--<
dependency>
<
dependentAssembly>
<
assemblyIdentitytype="win32"name="Microsoft.Windows.Common-Controls"version="6.0.0.0"processorArchitecture="*"publicKeyToken="6595b64144ccf1df"language="*"/>
<
/dependentAssembly>
<
/dependency>
-->
<
/assembly>
一旦知道你的应用程序中已包含此文件, 就可以继续执行最后一步。
2.请求管理员权限 为了以管理员权限启动应用程序, 你将需要更改trustInfo元素内的requestedExecutionLevel子节点的值。 requestedExecutionLevel节点标识应用程序请求执行的安全级别。该元素没有子元素, 具有以下2个属性:
级别要求。指示应用程序正在请求的安全级别。可能的值为:
- asInvoker, 不要求其他权限。此级别不需要其他信任提示。
- maximumAvailable, 请求父进程可用的最高权限。
- requireAdministrator, 请求完全的管理员权限。
- ClickOnce应用程序将仅使用asInvoker值安装。以任何其他值安装将失败。
可选的。指示应用程序是否需要访问受保护的用户界面元素。值为true或false, 默认值为false。仅已签名的应用程序的值应为true。
在默认清单中, 你将找到下一个值:
<
requestedExecutionLevellevel="asInvoker" uiAccess="false" />
但是, 你需要将其更改为下一个, 以要求管理员权限:
<
requestedExecutionLevellevel="requireAdministrator" uiAccess="false" />
将更改保存在app.manifest文件上并使用Visual Studio调试器启动应用程序后, 将看到以下警告(仅当你未以管理员身份运行Visual Studio时)。
文章图片
编码愉快!
推荐阅读
- 关于HTML/CSS模板的7个惊人秘密
- Golang与Node比较(性能,可伸缩性及更多)
- 在编程中如何确定一年是否飞跃
- 如何解决SQLSTATE [42000](语法错误或访问冲突:1118行大小太大(8126)在MySQL 5.7中)
- Android / Java - 在位图底部绘制文本
- Android QR位图需要帮助才能删除保证金
- Android - 将ImageView设置为URL
- Android SkImageDecoder :: Factory返回null错误
- 直接从Android活动下载图像