vs2005 ,2008,2010中引入app.manifest(即c#程序在win7下以管理员权限运行方法)

打开VS2005、VS2008、VS2010工程,查看工程文件夹中的Properties文件夹下是否有app.manifest这个文件;如没有,按如下方式创建:鼠标右击工程在菜单中选择“属性”,点击工程属性的“安全性”标签,在安全性标签页中勾选“启用ClickOnce安全设置”,并选择“这是完全可信的应用程序”,保存工程,此时在Properties下已经自动生成了app.manifest文件。

将默认的app.manifest文件修改为

[html] view plain copy

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <asmv1:assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1"
  3. xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2"
  4. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  5. <assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
  6. <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
  7. <security>
  8. <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
  9. <!-- UAC Manifest Options
  10. If you want to change the Windows User Account Control level replace the
  11. requestedExecutionLevel node with one of the following.
  12. <requestedExecutionLevel  level="asInvoker" uiAccess="false" />
  13. <requestedExecutionLevel  level="requireAdministrator" uiAccess="false" />
  14. <requestedExecutionLevel  level="highestAvailable" uiAccess="false" />
  15. If you want to utilize File and Registry Virtualization for backward
  16. compatibility then delete the requestedExecutionLevel node.
  17. -->
  18. <requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
  19. </requestedPrivileges>
  20. </security>
  21. </trustInfo>
  22. </asmv1:assembly>

配置文件修改后,我们运行应用程序,就会首先弹出这样一个提示框,点 Yes 后,程序才可以继续运行。

顺便说下,还可以通过一个方法了解到此时程序运行是不是管理员权限:

[csharp] view plain copy

  1. public static bool IsAdministrator()
  2. {
  3. WindowsIdentity identity = WindowsIdentity.GetCurrent();
  4. WindowsPrincipal principal = new WindowsPrincipal(identity);
  5. return principal.IsInRole(WindowsBuiltInRole.Administrator);
  6. }

对于XML文件中引用的UAC执行权限级别,分别代表下列含义:

asInvoker : 应用程序就是以当前的权限运行。

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

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

默认情况下是 asInvoker。

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

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

时间: 2024-08-08 03:10:06

vs2005 ,2008,2010中引入app.manifest(即c#程序在win7下以管理员权限运行方法)的相关文章

csharp:引入app.manifest,程序在win7下以管理员权限运行配置方法

https://msdn.microsoft.com/en-us/library/windows/desktop/hh848036(v=vs.85).aspx https://msdn.microsoft.com/en-us/library/windows/apps/ff769509(v=vs.105).aspx <?xml version="1.0" encoding="utf-8"?> <asmv1:assembly manifestVersi

VS2005 工程在win7下使用管理员权限运行

想关资料 http://stackoverflow.com/questions/13030492/set-administrator-privilege-for-my-c-application-in-vs2005 http://msdn.microsoft.com/en-us/library/bb756929.aspx http://msdn.microsoft.com/en-us/library/ms235591.aspx //================================

VS2005 VS2008编译的程序在Win7下以管理员身份运行的设置

在VS2005或者VS2008 里面,直接项目右键---属性---连接器---清单文件---uac执行级别   选择requireAdministrator  重新编译 这样你的程序直接运行就拥有管理员权限了

【转】vc++MCF/C++/C中怎样让应用程序获得或以管理员权限运行 ,ShellExecuteEX编程 --- 获取管理员权限

ShellExecuteEX编程 --- 获取管理员权限:http://blog.csdn.net/jhui163/article/details/5873027 怎样让你的应用程序获得管理员权限:就是在运行开发工具如vc6.0 或vs2010时,要以管理员身份运行,这样你的应用程序才可以继承 http://bbs.csdn.NET/topics/390262991 解决:在vs2010等开发工具中虽然以管理员身份编译运行了程序,可以获得管理员权限,但是当单独点击Debug或release版时,

通过给程序里嵌入manifest,使得程序运行时弹出UAC窗口

我们知道,当一个程序需要权限运行时,需要右键点击程序,然后使用管理员权限打开程序.另外,如果你用vc2008以上开发程序,可以在工程里选择uac,在生成的程序里,如果点击运行程序会弹出需要管理员权限运行程序的窗口. 现在可以通过把manifest嵌入普通程序里来达到这个效果. 现在说一下怎么样给一个普通的在单击运行时不会弹出需要管理员权限的程序增加这个功能. 1.假使这个普通程序名字为myapp.exe. 现在在程序的目录下编写一个manifest文件,命名为myapp.exe.manifest

安装包中DLL文件在WIN7下不能正常注册的解决方案

exe在Vista或Win7下不以管理员权限运行,会被UAC(用户帐户控制)阻止访问系统某些功能,如修改注册表操作等:如何让exe以管理员权限运行呢,方法有两种,一个是直接修改exe属性:另一个是在程序中加入MANIFEST资源,下面分别介绍. 1. 直接修改exe属性: 1) 右击“exe”,在弹出的菜单中选择“属性”,出现的界面如下图: 2) 选择“兼容性”项,并勾选“以管理员身份运行此程序”项即可. 2. 在程序中加入MANIFEST资源,分C#和delphi实现方法: 1) C#: ? 

在Winform程序中设置管理员权限及为用户组添加写入权限

在我们一些Winform程序中,往往需要具有一些特殊的权限才能操作系统文件,我们可以设置运行程序具有管理员权限或者设置运行程序的目录具有写入的权限,如果是在操作系统里面,我们可以设置运行程序以管理员身份运行,或者设置Users用户组在运行目录中具有写入权限都可以解决问题,不过如果我们想通过C#代码进行自动的处理,那么应该如何实现呢? 1.系统设置管理员权限或者目录写入权限 如果我们需要让程序以管理员身份运行,那么可以通过设置快捷方式的属性或者应用程序的属性为[以管理员身份运行此程序]即可实现,如

(转)在Winform程序中设置管理员权限及为用户组添加写入权限

本文转载自:http://www.cnblogs.com/wuhuacong/p/5645172.html 在我们一些Winform程序中,往往需要具有一些特殊的权限才能操作系统文件,我们可以设置运行程序具有管理员权限或者设置运行程序的目录具有写入的权限,如果是在操作系统里面,我们可以设置运行程序以管理员身份运行,或者设置Users用户组在运行目录中具有写入权限都可以解决问题,不过如果我们想通过C#代码进行自动的处理,那么应该如何实现呢? 1.系统设置管理员权限或者目录写入权限 如果我们需要让程

通过修改manifest文件来解决Vista/Win7/Win8下应用程序兼容性问题

在Vista/Win7/Win8下,有一个系统兼容性助手功能,在安装程序安装完成或卸载完成后,可能会弹出应用程序兼容性助手相关的提示,提示程序可能安装不正确,很是烦人.如下图所示: 事实上,我们的程序兼容性是没问题的,只不过是在程序中没有指定应用程序兼容的操作系统,所以导致了这些问题.      VS2008和VS2010可以生成一个与exe应用程序相关联的.manifest文件,微软已经为该文件中添加了一个新的<compatibility> 字段, 这个字段用来指定你的应用程序可以兼容的操作