Delphi与Windows 7下的用户账户控制(UAC)机制
WIN7, Vista提供的UAC机制,它的主要目的是防止对于操作系统本身的恶意修改。
对于Delphi程序的影响,UAC主要在于以下几点:
1、由于UAC机制,Delphi对于系统的操作可能无声的失败,而同样的程序,在2000/X下面可能运行正常。譬如注册表的改动。。。
2、为了避免这样的情况,Delphi程序必须支持Vista UAC标注,也就是说,在UAC程序的图标下面显示盾牌标志。这样可以在需要系统更高权限的时候,提醒用户。
为了让程序显示UAC标志,现在看来Vista是通过读取程序的资源(Resource)里面的MANIFEST资源,来决定是否显示“UAC盾牌”。
为了支持UAC,Delphi程序必须在资源里面嵌入MANIFEST信息。
1、首先编辑一个文件,内容如下:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="requireAdministrator"/>
</requestedPrivileges>
</security>
</trustInfo>
</assembly>
保持为UAC.manifest,这里文件是随意的。特别注意红色的“requireAdministrator”,这个表示程序需要管理员(Administrator)才能正常运行。
UAC Manifest 选项
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
<requestedExecutionLevel level="highestAvailable" uiAccess="false" />
2、然后编辑一个RC文件,名为uac.rc
1 24 UAC.manifest
其中:
1-代表资源编号
24-资源类型为RTMAINIFEST
UAC.manifest-前面的文件名称
3、用brcc32编译这个rc文件为res文件
brcc32 uac.rc -fouac.res
其中 -fo 设置输出文件名
4、在程序里面加入
{$R uac.res}
或者将3,4合并为 {$R 'uac.res' 'uac.rc'}
需要将uac.rc添加到项目中
让Delphi编译的时候,把uac.res编译进exe文件
程序图标下面显示UAC盾牌标志了。
5、注意,这个程序不能运行在subst 虚拟驱动器上,否则会提示“指定路径不存在”
6、在编译时若产生错误:在project->options->application->enable runtime themes前面的勾取消,再编译就可以了!
出处: http://www.cnblogs.com/sandman/archive/2009/11/06/1597090.html
Delphi与Windows 7下的用户账户控制(UAC)机制的更多相关文章
- Delphi与Windows 7下的用户账户控制(UAC)机制 及 禁用兼容性助手
WIN7, Vista提供的UAC机制,它的主要目的是防止对于操作系统本身的恶意修改.对于Delphi程序的影响,UAC主要在于以下几点:1.由于UAC机制,Delphi对于系统的操作可能无声的失败, ...
- Delphi与Windows 7下的用户账户控制(UAC)机制(有可能需要取消enable runtime themes)
WIN7/WIN8/WIN10, Vista提供的UAC机制,它的主要目的是防止对于操作系统本身的恶意修改.对于Delphi程序的影响,UAC主要在于以下几点:1.由于UAC机制,Delphi对于系统 ...
- Win8系统如何关闭用户账户控制UAC
按WIN+S,屏幕右侧出现搜索框,在搜索框中输入UAC,然后单击"更改用户账户控制设置" 然后把弹出的窗口改成"从不通知"就可以了
- 不出现用户帐户控制-让Win7的用户账户控制(UAC)放过信任的程序
微软有个官方工具 Microsoft Application Compatibility Toolkit: http://www.microsoft.com/downloads/details.asp ...
- Linux下关于用户账户的几个文件解析
Linux下关于用户账户的几个文件解析 Linux是一个多用户系统,但是对于一个多用户共存的系统中,当然不能够出现用户相互越权等一系列的安全问题,所以如何正确的管理账户成为了Linux系统中至关重要的 ...
- win7如何设置某个软件不弹出用户账户控制
手动修改注册表: 在 HKEY_CURRENT_USERS\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers 键下面 ...
- [Win32] UAC用户账户控制 (提权)
最近写程序时遇到一个问题,就是当一个程序需要管理员权限才能正常运行该怎么办? 通过查阅多方资料,我总结出来几个比较实用的办法(每种办法实现方法不同,同时功能上也有一些小小的差异) 方法一(批处理脚本) ...
- WIN10系统如何关闭用户账户控制
在底部搜索框中输入UAC,打开用户账户控制设置 更改为从不通知即可
- CentOS下解决”用户账户is not in the sudoers file“问题
如上图,在当前用户cent(我的用户名)下使用sudo命令时,提示"cent is not in the sudoers file. This incident will be report ...
随机推荐
- Elasticsearch--集群管理_再平衡&预热
目录 控制集群的再平衡 再平衡 集群的就绪 集群再平衡设置 控制再平衡何时开始 控制同时在节点移动的分片数量 控制单个节点上同时初始化的分片数量 控制单个节点上同时初始化的主分片数量 控制分配的分片类 ...
- CCF|分蛋糕|Java
import java.util.Scanner; public class tyt { public static void main(String[] args) { Scanner in = n ...
- jQuery的属性与样式之样式操作.css()
.css() 方法:获取元素样式属性的计算值或者设置元素的CSS属性 获取: .css( propertyName ) :获取匹配元素集合中的第一个元素的样式属性的计算值 .css( property ...
- centos7.2密码在单用户下面的修改
centos7.2在但用户模式下面的修改 1.开机启动 2.grub模式按E健 3.Linux16行的"ro"修改为 "rw init=/sysroot/bin/sh&q ...
- (转)淘淘商城系列——maven工程debug调试
http://blog.csdn.net/yerenyuan_pku/article/details/72784074 上文我们已经实现了商品列表展示的功能,在实际开发中我们肯定是要经常对maven工 ...
- Custom Operators
New operators are declared at a global level using the operator keyword, and are marked with the pre ...
- ansible配置mysql主从复制
配置主机1.下载安装所需安装包 [root@server1 ansible]# lsansible-2.7.8-1.el7.noarch.rpmansible-tower-setup-bundle-3 ...
- 360浏览器 收藏夹 ico 缓存 目录
C:\Users\Administrator\AppData\Roaming\360se6\apps\data\users\default\data\ico
- Windows:32位程序运行在64位系统上注册表会重定向
参考资料 微软注册表英文文档 StackOverflow社区回答 1.注册表位置 64bit系统(Windows Server 2008 R2只有64bit系统)的注册表分32 位注册表项和64位注册 ...
- mac vim设置python语法高亮
1 "显示行号 2 set nu 3 4 "设置缩进tabstop 5 set ts=4 6 set shiftwidth=4 7 set expandtab 8 ...