[转]Vista UAC下应用程序标注为“需要管理员权限”的四种方法

在Microsoft 的UACBlog里对此有过叙述。总结如下:

首先,如果一个程序被识别为管理员程序时,Vista会在它的图标上加上一个盾牌标记。因此很容易看出来。

其次,如果UAC有效的话,管理员程序启动时会弹出执行许可或者管理员密码输入对话框。

据此你可以知道你的标注是不是成功。

方法一:文件名里包含 “Setup”, ”Install” , “Update”字样,比如 TestSetup.exe 之类的。

这个方法由UAC的本地安全策略“检测安装程序”所控制。如果该策略设置为无效,则无效。默认是有效的。 当然,这种安装包也可以强行设置为非管理员权限运行,例如软媒团队开发的酷点、闪游浏览器的安装包就是这种。

方法二:在Exe里加入manifest资源。.Net的程序好像会自动产生一个。比较新的Visual Studio 2005也会自动生成manifest.

对于比较老的Visual Studio 6以前的应用程序,可以手工编辑一个mainfest文件,然后用mt.exe 写入到exe的资源里去

(mt.exe在Visual Studio 2005或者platform SDK里有,Visual Studio 2005 Express版是免费的,可以自由下载)

Manifest文件是xml格式的文本文件。如下面的例子

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>

<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">

<assemblyIdentity version="1.0.0.0"

processorArchitecture="x86"

name="Company.Department.Exe Name"

type="win32"/>

<description>Description of your application</description>

<!-- Identify the application security requirements. -->

<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">

<security>

<requestedPrivileges>

<requestedExecutionLevel

level="requireAdministrator"

uiAccess="false"/>

</requestedPrivileges>

</security>

</trustInfo>

</assembly>

<assemblyIdentity>的name属性可以任意自取一个名字,推荐的是按名字空间方式命名。

<trustinfo>是Vista新增的部分。注意level被标记为requireAdministrator.

此外level也可设为highestAvaliable, asInvoker, asInvoker 是默认的(与父进程同权限),highestAvaliable则是可取得最大权限,基本无用。

将这个manifest文件命名为Exe名+.manifest, 如test.exe.manifest
然后用mt.exe绑定
Mt.exe –mainfest test.exe.manifest –outputresource:test.exe;1

1是这个manifest资源的ID.可以有多个manifest资源,但是vista默认使用1。其他的要自己编码来玩。

方法三:用微软的Application Compatibility Toolkit 4.1里的Compatibility Administrator制作一个兼容性数据库文件,扩展名为.sdb, 然后把这个sdb和应用程序一起分发。

基本步骤是

制作SDB

1. 在Compatibility Administrator 里新建的sdb下(打开就有),建立new fix(工具栏上的new fix)。对话框出现,输入名字。

2. 兼容平台选None (这个Application Compatibility Toolkit 4.1是为xp服务的,所以没有XP选项)

3. 然后是需要设置的兼容性,选择”RunAsAdmin”, 在列表中间的位置。需要滚动一下。

4. 选择exe文件名,下一步

5. 如果有可能存在同名exe, 选上“FileSize”, “CheckSum”, 以便使这个兼容性设置针对的确实是你的文件。

6. 如果有多个EXE要设,可以重复1-5步骤。

7. 保存sdb文件,保存时输入的数据库名字会出现在目标PC的“添加删除程序”中。

发布SDB

1. 在安装目标PC的Vista系统中,以管理员权限启动cmd(在开始菜单的“命令行提示符”图标上按右键,然后以管理员权限执行)

2. 输入 “sdbinst 你的sdb文件名” 例如 sdbinst test.sdb . 按回车。Sdbinst是系统自带的安装sdb的程序。XP里就有.

安装你的应用程序后,就能以管理员方式执行。

方法四:用户自己动手,或者Vista自动检测,或者你修改注册表。

用户自己动手的方法是在Exe文件的属性对话框的“兼容性”标签中,选中“以管理员权限执行此程序”复选框。

此外,如果你的程序CreateProcess反复失败的话,有时Vista会冒出个“程序兼容性助手”,自动给你这个程序在注册表里加一项。

手动修改注册表其实和上2者一样。键为
HKEY_CURRENT_USERS/Software/Microsoft/Windows NT/CurrentVersion/AppCompatFlags/Layer 键下面的值的名字是程序的全路径,值数据是“RunAsAdmin”.(兼容性助手写入的值是ElevateCreateProcess)

Win7,Vista UAC下应用程序标注为“需要管理员权限”的四种方法相关推荐

  1. 计算机用户没有管理员权限,教你让win7系统电脑普通账户拥有管理员权限的两种方法...

    在ghost win7系统电脑中如果没有管理员权限,是没办法打开一些程序.文件的,甚至删除一些文件也要有管理器权限,不然就会提示"您的权限不足,请点击继续来获得权限."那么怎么让一 ...

  2. 在 Linux 下将 PNG 和 JPG 批量互转的四种方法

    导读 计算机术语中,批处理指的是用一个非交互式的程序来执行一序列的任务的方法.这篇教程里,我们会使用 Linux 命令行工具,并提供 4 种简单的处理方式来把一些.PNG格式的图像批量转换成.JPG格 ...

  3. 在Linux下将PNG和JPG批量互转的四种方法

    计算机术语中,批处理指的是用一个非交互式的程序来执行一序列的任务的方法.这篇教程里,我们会使用 Linux 命令行工具,并提供 4 种简单的处理方式来把一些 .PNG 格式的图像批量转换成 .JPG ...

  4. 如何让.net程序自动运行在管理员权限下

    如何让.net程序自动运行在管理员权限下 VS2008  c# 编译的WINFORM程序 以管理员身份运行 windows 7和vista提高的系统的安全性,同时需要明确指定"以管理员身份运 ...

  5. window40系统怎么重装不下服务器,Win10系统异常不想重装怎么办 四种系统修复方法哪种比较好...

    Win10系统使用久了,垃圾多了使系统不堪重负,碰上有些恶意软件会修改设置导致系统异常,或者不小心操作修改一些服务都能使系统受伤.当你的系统操作反应越来越慢,或者已经到了瘫痪地步,该如何办?重装?太麻 ...

  6. 在应用程序中替换Linux中Glibc的malloc的四种方法

    打算优化系统的内存分配,接管glibc提供的内存管理,但是整个工程的代码量很大,使用malloc.realloc.calloc和free的地方到处都是,如果自己写好的接口需要重命名所有的调用,先不说工 ...

  7. 运行jar应用程序引用其他jar包的四种方法

    http://longdick.iteye.com/blog/332580 大家都知道一个java应用项目可以打包成一个jar,当然你必须指定一个拥有main函数的main class作为你这个jar ...

  8. WPF程序将DLL嵌入到EXE的两种方法

    2019独角兽企业重金招聘Python工程师标准>>> WPF程序将DLL嵌入到EXE的两种方法 这一篇可以看作是<Visual Studio 版本转换工具WPF版开源了> ...

  9. 在 Mac OS X Lion 下修改 Hosts 的四种方法

    一名刚刚使用 Mac OS X Lion 系统的朋友问我怎么该系统下修改 Hosts 文件,说网上搜了很多办法都不管用,只要编辑 Hosts 文件就出现"你不是文件 hosts 的所有者,因 ...

  10. PHP 屏幕亮度,window_Win8系统 调节电脑屏幕亮度的四种方法,第一页:Win8系统下调节电脑屏 - phpStudy...

    Win8系统 调节电脑屏幕亮度的四种方法 第一页:Win8系统下调节电脑屏幕亮度的四种方法 第二页:Win8系统下调节电脑屏幕亮度的四种方法 刚接触到win8系统的用户或许会比较生疏,很多设置都找不到 ...

最新文章

  1. LinkedList详解,看这篇就够了
  2. 分布式服务常见问题—分布式事务
  3. python爬虫网络请求超时是什么意思_python爬虫怎么处理异常和超时?
  4. 快速傅里叶变换及python代码实现
  5. XML解析-Dom4j的DOM解析方式更新XML
  6. SpringBoot集成logback彩色日志配置以及banner启动设置(炫酷到爆炸!)
  7. MAVEN Error: Using platform encoding (GBK actually) to copy filtered resources.....
  8. java 求向量的均值,标准数组——向量
  9. 帮助你生成分享和显示社交媒体网络按钮的jQuery插件 - #50C1AL
  10. dede采集-织梦全自动采集插件-织梦免费采集插件
  11. EF 和 EF CORE 逆向生成实体类
  12. oracle 游离块修复,求助讨论---上颌单侧后牙游离缺失的修复
  13. android sms 接收短信,Android SMS 短信操作
  14. UE4 简单记录EQS的使用方法
  15. 四、Node.js - 数据库与身份认证
  16. 面经1.小米前端实习
  17. 支付宝服务窗 开发 验证
  18. 解决极值中的神奇设k法_神奇宝贝Go拥有对您的Google帐户的完全访问权限。 这是解决方法[更新]...
  19. [译]Vue官方成员:Vite生态发展的怎么样了
  20. google play支付提示“此版本的应用程序未配置为通过Google Play结算。有关详情,请访问帮助中心。”

热门文章

  1. 爬取汉字五行元素,并存入数据库
  2. n个人围成一圈指针c语言,用C语言编写:有n个人围成一圈,顺序排号...
  3. Clarifai 识图系统的使用
  4. 怎么把多个html合在一起,多个视频怎么合并在一起,如何把视频合并在一起
  5. 8.11成勘院地图服务部署
  6. 十大免费好用的视频软件推荐,新手小白必备
  7. java+springmvc+vues 员工工资管理系统#毕业设计
  8. SINT++: Robust Visual Tracking via Adversarial Positive Instance Generation—CVPR2018 阅读
  9. Java方法讲解、方法定义、参数类型、方法调用、方法重载和java命令行传递参数
  10. 7、线程池使用过吗?谈谈对 ThreadPoolExector 的理解?