UAC 注册表 WIN64 OS 运行时主题
首先EXE程序是32位,DelphiIDE对Project默认是启用主题的,默认情况在WIN64 OS下运行时,无管理员权限。
WIN64 OS,默认情况下UAC是启用的。
上述默认情况下,EXE 是无法写注册表HKEY_LOCAL_MACHINE\Software的,OpenKey 返回False(既然启用了主题,但是未要求管理员权限,那Windows就假定该程序不需要写注册表)。
如果禁用IDE的主题选项,OpenKey返回True(可能是以前win9x的老程序,因为没有manifest文件来判断,所以返回true),但是后面实际写时,会提示出错
---------------------------
Project1
---------------------------
Failed to set data for 'ConsentPromptBehaviorAdmin'
---------------------------
确定
---------------------------
EXE加 XPManifestUAC.manifest 资源,再次编译,就会自动有盾牌,有管理员权限。
如果在IDE里2种方式运行,都会显示
---------------------------
Error
---------------------------
Unable to create process: 请求的操作需要提升。.
---------------------------
OK
---------------------------
如果在 文件夹窗口运行,就是显示提升对话框,提升以后。
然后以with TRegistry.Create do 写注册表成功,但是写的PATH会 重定向到Wow6432Node下。
如果code再改一下, 用
with TRegistry.Create(KEY_WOW64_64KEY or KEY_ALL_ACCESS) do 红色的是必须的,只有前面的是不行的,否则OpenKey返回False。
就能写到 PATH 对应的位置,Windows7根据情况自动确定Wow6432Node下是否同步相应的值。
如果32位的EXE自己要 读、写注册表保存软件自身的设置,一般自动重定向到Wow6432Node也没有什么问题。
如果32位的EXE要读、写到64PATH,那才需要KEY_WOW64_64KEY 。
http://blog.csdn.net/xiexuan2007/article/details/38416123
http://www.xuebuyuan.com/809036.html
http://blog.csdn.net/educast/article/details/10168621
http://www.bccsafe.com/?p=634
另外,文件虚拟化
1、Windows7兼容的程序(带manifest文件或者启用主题,但是以标准用户权限运行),比如自带的记事本,保存文件到Windows 目录C:\windows,会提示
你没有权限在此位置保存文件。
请与管理员联系以取得相应权限。
你想改为保存到 我的文档 文件夹中吗?
这时,虚拟化技术并未生效。
2、WindowsXP下的notepad.exe,复制到Windows7运行,也保存到Windows目录
能成功保存,没有任何提示信息。
这时,虚拟化技术起作用了。其实文件是被保存到了 用户配置文件夹下 AppData-Local——VirsualStore-原来准备保存的文件夹Windows。
3、Windows7兼容的程序(以管理员权限运行,manifest文件里要求RunAsAdministrtor),则,可以保存数据到 Windows目录。
UAC 注册表 WIN64 OS 运行时主题的更多相关文章
- Installshield 打包安装程序时写入注册表,及运行bat文件
一.写入注册表 1. 打开project assistant –> Project Registry 可以像注册表里一样操作,其中[INSTALLDIR]是指的安装路径 二. 运行bat文件 ...
- 64 位 Windows 平台开发注意要点之注册表重定向
Window 系统错误代码 ERROR_SUCCESS,本博客中一律使用 NO_ERROR 代替.虽然 ERROR_SUCCESS 与 NO_ERROR 是完全等价的,都代表成功,但是后者却和其他错误 ...
- ArcGIS AddIN开发之COM对象写入注册表
做一个交互式绘制文字的工具,希望这次设置的Symbol,下次打开ArcMap时自动调用这个Symbol,并支持对其进行修改. 解决方法是将这个Symbol写入注册表中,每次自动读取上一次设置的Symb ...
- asp.net中通过注册表来检测是否安装Office(迅雷/QQ是否已安装)
原文 asp.net中通过注册表来检测是否安装Office(迅雷/QQ是否已安装) 检测Office是否安装以及获取安装 路径 及安装版本 代码如下 复制代码 #region 检测Office是否 ...
- C#注册表操作类--完整优化版
using System; using System.Collections.Generic; using System.Text; using Microsoft.Win32; namespace ...
- 将字符串存储到注册表中,长度一定是 strlen(text) + 1
参考:https://docs.microsoft.com/en-us/windows/desktop/sysinfo/registry-value-types 将字符串存储到注册表中,长度参数一定要 ...
- Java虚拟机运行时内存区域简析
figure:first-child { margin-top: -20px; } #write ol, #write ul { position: relative; } img { max-wid ...
- [二]Java虚拟机 jvm内存结构 运行时数据内存 class文件与jvm内存结构的映射 jvm数据类型 虚拟机栈 方法区 堆 含义
前言简介 class文件是源代码经过编译后的一种平台中立的格式 里面包含了虚拟机运行所需要的所有信息,相当于 JVM的机器语言 JVM全称是Java Virtual Machine ,既然是虚拟机, ...
- [SQL]卸载数据库清理注册表方法regedit
.打开注册表. 开始——运行——regedit——确定 .然后找到下面的文件夹,删除掉: HKEY_CURRENT_USER\ Software\ Microsoft\ Microsoft SQL S ...
随机推荐
- SQL Over
与over函数结合的几个函数 create table #tab(A varchar(), B varchar()) insert into #tab select 'A1', 'B1' union ...
- Max Factor(素数筛法)题解
Max Factor Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ...
- redis安装使用配置
一.安装前的准备 下载redis http://redis.io/download https://github.com/mythz/redis-windows 下载Windows版客户端net版sd ...
- require的压缩命令
注意点 node r.js -o baseUrl=js name=main out=js/build.js paths.jquery=empty: 注:baseUrl是可选的 取决于页面是否有写这个入 ...
- 【TCP/IP详解 卷一:协议】第二章:链路层
2.1 引言 链路层的三个目的: (1)为IP模块发送和接收IP数据报. (2)为ARP模块发送ARP请求和接收ARP应答.地址解析协议:ARP. (3)为RARP模块发送RARP请求和接收RARP应 ...
- C# 实现简单的 Heap 堆(二叉堆)
如题,C# 实现简单的二叉堆的 Push() 和 Pop(), 如有不足欢迎指正. 另外,在C#中使用 Heap 的相似功能可以考虑使用:Priority Queues,SortedDictiona ...
- HDU 1171 Big Event in HDU(0-1背包)
http://acm.hdu.edu.cn/showproblem.php?pid=1171 题意:给出一系列的价值,需要平分,并且尽量接近. 思路:0—1背包问题. 0-1背包问题也就是有n种物品且 ...
- Javascript库的产生和解读
javascript库的产生,增强了浏览器或javascript语言的某些机制的功能, 让业务开发人员,更专注业务逻辑,而不是机制逻辑. 比如, 0.兼容性 同样的功能函数,不同的浏览器所暴露的a ...
- HHVM代码规范
原文戳我 本文旨在为HHVM编写C++代码提供一种指南,包括了什么时候.怎么使用各种语言功能,以及代码的格式.我们的目标是确保代码持续高可用的同时,还能容易被阅读和参与贡献,尤其是对新人而言. HHV ...
- 浅谈PHP5中垃圾回收算法
原文链接:http://www.cnblogs.com/leoo2sk/archive/2011/02/27/php-gc.html PHP是一门托管型语言,在PHP编程中程序员不需要手工处理内存资源 ...