本文作者:每日一学网站长

在VS中如何让C#语言编写的程序自动以管理员身份运行

每日一学网站长 9个月前 ( 03-30 ) 抢沙发


snipaste_20180809_141958.bmp

    在Vista或Win7或Win8或Win10系统上exe程序默认不是以管理员身份运行的,它会被UAC(用户帐户控制)阻止访问系统某些功能,如修改注册表操作、操作硬盘上的文件等。但是有时我们确实需要程序在开始运行时就是以管理员身份运行的,这时我们在VS中需进行以下操作:

(1)在要编译的项目上右击选择【属性】然后选择【安全性】再勾选上【启用ClickOnce安全设置】,此时会在解决方案资源管理器的Properties中生成app.manifest文件

image.png


image.png


(2)双击打开生成的app.manifest文件,找到如下代码:


<requestedExecutionLevel level="asInvoker" uiAccess="false" />


将其修改为:

<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />


(3)然后在【安全性】中去掉对【启用ClickOnce安全设置】的勾选,全部保存后重新编译就可以了。


image.png


拓展:

我们可以看到这个配置中有一个 requestedExecutionLevel 项,这个项用于配置当前应用请求的执行权限级别。这个项有3个值可供选择,如下所示:

asInvoker : 如果选这个,应用程序就是以当前的权限运行。


highestAvailable: 这个是以当前用户可以获得的最高权限运行。


requireAdministrator: 这个是仅以系统管理员权限运行。

默认情况下是 asInvoker。


highestAvailable 和 requireAdministrator 这两个选项都可以提示用户获取系统管理员权限。那么这两个选项的区别在哪里呢?


他们的区别在于,如果我们不是以管理员帐号登录,那么如果应用程序设置为 requireAdministrator ,那么应用程序就直接运行失败,无法启动。而如果设置为 highestAvailable,则应用程序可以运行成功,但是是以当前帐号的权限运行而不是系统管理员权限运行。如果我们希望程序在非管理员帐号登录时也可以运行(这种情况下应该某些功能受限制) ,那么建议采用 highestAvailable 来配置。


文章版权及转载声明

作者:每日一学网站长本文地址:https://www.meiriyixue.cn/post/998.html发布于 9个月前 ( 03-30 )
文章转载或复制请以超链接形式并注明出处每日一学网

分享

发表评论

快捷回复:

验证码

评论列表 (暂无评论,人围观)参与讨论

还没有评论,来说两句吧...