当前位置: 首页 > 编程笔记 >

c#通过app.manifest使程序以管理员身份运行

季俭
2023-03-14
本文向大家介绍c#通过app.manifest使程序以管理员身份运行,包括了c#通过app.manifest使程序以管理员身份运行的使用技巧和注意事项,需要的朋友参考一下

微软在Windows Vista开始引入了UAC(用户帐户控制)新技术(点击这儿了解什么是UAC)。当程序执行时需要权限的话,UAC会弹出警告消息:让用户确认是否同意允许这个程序改变你的计算机配置,windows需要得到你的许可才可以让程序继续执行下去。

通常我们使用c#编写的程序不会弹出这个提示,也就无法以管理员身分运行。微软的操作系统使用微软的产品方法当然是有的,通过app.manifest配置可以使程序打开的时候,弹出UAC提示需要得到允许才可以继续,这样就获得了管理员的权限来执行程序。

方法如下:

打开vs2005、vs2008等工程,在【解决方案资源管理器】里查看是否有app.manifest这个文件,如果没有的话,通过以下方法创建:

方法1:

1、在【解决方案资源管理器】右键工程名称选择属性;
2、在弹出的该对话框中,选择【安全性】选项卡。
3、勾选【启用ClickOnce安全设置】,并选中【这是完全可信的应用程序】。
4、保存工程,这时候app.manifest就自动创建了。


打开app.manifest把默认的配置修改一下,通过代码的注释,可以知道需要修改的节点是【requestedExecutionLevel】



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

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

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

找到<requestedExecutionLevel  level="asInvoker" uiAccess="false" />
把其改为<requestedExecutionLevel  level="requireAdministrator" uiAccess="false" />

这时候修改完成,按下F5进行调试,通常会收到如下的错误提示:【ClickOnce 不支持请求执行级别“requireAdministrator”】。

事情好像发生了相互矛盾,上面开启【ClickOnce】便自动创建了app.manifest,现在修改了app.manifest却提示:ClickOnce 不支持请求执行级别“requireAdministrator”。

解决方法是:只要把【启用ClickOnce安全设置】不勾选就可以了。

如果操作步骤正确,按下F5进行调试,会弹出如下的提示框,VS具有提升的权限。
 


这样我们编写的应用程序在运行后,就会首先弹出这样一个提示框 , 点【Yes】后,程序才可以继续运行,并且获得系统管理员的权限。

方法2:

为工程项目添加一个类,应用程序清单文件(app.manifest)。



然后可以看到app.manifest的位置不在Properties属性里了,变成在引用里了,其节点内容也少了一些。


剩下的方法和上面相同。这样跳过了【启用ClickOnce安全设置】这步,直接执行,不会出错了。

 类似资料:
  • 问题内容: Java中是否有一种方法可以要求系统控制管理员功能。当然不做:右键单击exe->以admin身份运行。 我想要的是UAC提供的框架,例如Windows Vista或Windows 7。 还是在从jar中制作exe时进行一些设置? 问题答案: 你必须创建一个清单文件,该清单文件指定你的应用程序需要管理员权限。你可以将清单包含在exe中,也可以将其保留为单独的文件(yourapp.exe.

  • 本文向大家介绍C#中用管理员身份运行程序代码实例,包括了C#中用管理员身份运行程序代码实例的使用技巧和注意事项,需要的朋友参考一下

  • 问题内容: 我正在用Java编写安装程序,因此将需要提升的权限才能访问Program Files目录。根据我在网上找到的信息,我编写了如下的实现: 我用来检查特权的测试与此处找到的答案略有不同,看起来像这样: 当我运行它时,它没有按预期方式进行特权测试,并调用了exec。通过查看来检查该呼叫是否有效,表明该过程实际上仍然有效。但是,我没有看到任何有关新过程的证据,Windows也没有提示我授予权限

  • 在将Selenium Web驱动程序C#与Chrome一起使用时,我遇到了一种常见情况:如果运行测试的进程是“以管理员身份运行”(Visual Studio或),Chrome将无法加载。 上下文 OS: Windows 7 x64 Chrome:版本64.0.3282.167(官方构建)(64位) Selenium. Chrome. WebDriver(chromedriver.exe): 2.3

  • 问题内容: 我有一个Java应用程序。无论如何,在Windows 7上,我是否可以知道该进程是否以管理员权限运行。 问题答案: 我在网上找到了此代码段,我认为它将为您完成这项工作。 它仅适用于Windows,并内置于核心Java包中。我刚刚测试了这段代码,它确实起作用了。它使我感到惊讶,但确实如此。 SID S-1-5-32-544是Windows操作系统中Administrator组的ID。 以

  • 问题内容: 我正在开发一个小型关机计划程序项目,在该项目中,我必须将计算机置于模式下。我正在使用的命令是 此命令需要管理员权限,我不知道该如何获得。另外,在搜索以前的答案时,我发现我可以用作 正在执行任务,但正在浪费太多时间,即使软件变慢。还有其他快速方法吗?我正在使用Netbeans IDE。 问题答案: 您有几种选择 A.使用admin priv创建快捷方式。 快捷方式将运行 您的Java代码