方法一(推荐):
添加应用程序清单文件app.manifest,并更改 Windows 用户帐户控制级别。
将
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
替换为
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
方法二:
修改App.xaml.cs,重写OnStartup成员方法
缺点:加上此段代码后,无法跟踪调试程序
解决办法:屏蔽此段代码,以管理员身份启动Visual Studio,调通程序后再解除屏蔽
/* ---------------------------------------------------------- * 文件名称:App.xaml.cs * * 作者:秦建辉 * * 微信:splashcn * * 博客:http://www.firstsolver.com/wordpress/ * * 开发环境: * Visual Studio V2017 * .NET Framework 4 Client Profile * * 版本历史: * V1.0 2017年06月16日 * 以管理员身份启动程序 * * 说明: * 缺点:加上此段代码后,无法跟踪调试程序 * 解决办法:屏蔽此段代码,以管理员身份启动Visual Studio,调通程序后再解除屏蔽 * ------------------------------------------------------------ */ using System; using System.Diagnostics; using System.Reflection; using System.Security.Principal; using System.Windows; namespace Splash { /// <summary> /// App.xaml 的交互逻辑 /// </summary> public partial class App : Application { protected override void OnStartup(StartupEventArgs e) { base.OnStartup(e); // 检测当前登录用户的组成员身份是否是管理员 if (!new WindowsPrincipal(WindowsIdentity.GetCurrent()).IsInRole(WindowsBuiltInRole.Administrator)) { // 创建启动对象 ProcessStartInfo startInfo = new ProcessStartInfo(Assembly.GetExecutingAssembly().CodeBase); // 设置启动参数 startInfo.Arguments = string.Join(" ", Environment.GetCommandLineArgs()); // 设置启动动作,确保以管理员身份运行 startInfo.Verb = "runas"; // 启动UAC Process.Start(startInfo); // 退出 Environment.Exit(0); } } } }