Delphi 禁用x64位系统文件重定向功能
在X64系统里面,一些特殊的目录和特殊的注册表键被分为2个独立的部分。对于文件系统来说,
%systemroot%\system32 目录被保留给64位文件使用,而32位文件会被重定向到%systemroot%\SysWOW64目录。
换句话说,所有的32位程序一般情况下只会出现在%systemroot%\SysWOW64目录里面。
任何32位程序试图访问%systemroot%\system32 目录的企图都会被重定向到%systemroot%\SysWOW64目录。
这个是一个默认的行为,除非程序的线程明确的指名需要关闭这种重定向机制。
在Win7 64位系统下,调用CopyFile函数进行函数拷贝,如果希望拷贝文件到System32目录下,
需要考虑程序是不是也是64位的,否则,程序会被重定向到Syswow64目录下,
为了防止出现文件被重定向,就需要调用函数Wow64DisableWow64FsRedirection取消文件的重定向,
并在完成指定功能后调用Wow64RevertWow64FsRedirection函数进行恢复。
HKEY_LOCAL_MACHINE\Software下新建一个项,然后使用64位的注册表编辑器查看,
会发现这个项只会出现在HKEY_LOCAL_MACHINE\Software\Wow6432Node键下而不会出
现在HKEY_LOCAL_MACHINE\Software键下,因为HKEY_LOCAL_MACHINE\Software键是专
门用于存放64位程序所使用的注册表数据的,而HKEY_LOCAL_MACHINE\Software\Wow6432Node
键是专门用于存放32位程序所使用的注册表数据的。
var OldWow64RedirectionValue: LongBool;
function DisableWowRedirection: Boolean;
type TWow64DisableWow64FsRedirection = function(var Wow64FsEnableRedirection: LongBool): LongBool;
StdCall;
var hHandle: THandle;
Wow64DisableWow64FsRedirection: TWow64DisableWow64FsRedirection;
begin Result := true;
try hHandle := GetModuleHandle('kernel32.dll');
@Wow64DisableWow64FsRedirection := GetProcAddress(hHandle, 'Wow64DisableWow64FsRedirection');
if ((hHandle <> 0) and (@Wow64DisableWow64FsRedirection <> nil)) then Wow64DisableWow64FsRedirection(OldWow64RedirectionValue);
except Result := False;
end;
end;
function RevertWowRedirection: Boolean;
type TWow64RevertWow64FsRedirection = function(var Wow64RevertWow64FsRedirection: LongBool): LongBool;
StdCall;
var hHandle: THandle;
Wow64RevertWow64FsRedirection: TWow64RevertWow64FsRedirection;
begin Result := true;
try hHandle := GetModuleHandle('kernel32.dll');
@Wow64RevertWow64FsRedirection := GetProcAddress(hHandle, 'Wow64RevertWow64FsRedirection');
if ((hHandle <> 0) and (@Wow64RevertWow64FsRedirection <> nil)) then Wow64RevertWow64FsRedirection(OldWow64RedirectionValue);
except Result := False;
end;
end;
http://blog.csdn.net/gj333/article/details/8268379
举例:
x64: HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Embarcadero\BDS\19.0\
x32: HKEY_LOCAL_MACHINE\SOFTWARE\Embarcadero\BDS\19.0\
http://bbs.2ccc.com/topic.asp?topicid=543793
Delphi 禁用x64位系统文件重定向功能的更多相关文章
- (转)关于X64位系统IIS7下支持32位asp.net程序
最近在windows2008 x64位系统下的IIS7下部署asp.net程序. vs2005或vs2008默认的情况下是Any cpu 的也就是支持x86和x64两种系统的.可我的程序在引用了一个三 ...
- 番茄花园Ghost Win10系统X64位10041装机版2015年4月
转载:系统妈,系统下载地址:http://www.xitongma.com/windows10/2015-04-01/6639.html 番茄花园Ghost Win10系统X64位10041装机版20 ...
- resx文件在X64位编译,提示“未能加载文件或程序集”的问题?
原文:resx文件在X64位编译,提示"未能加载文件或程序集"的问题? resx文件在X64位编译,提示"未能加载文件或程序集"的问题? 解答: 错误现象如下 ...
- 禁用backspace键的后退功能
禁用backspace键的后退功能,但是可以删除文本内容<script language="JavaScript">document.onkeydown = check ...
- 扩展 delphi 泛型 以实现类似lambda功能 , C#中的any count first last 等扩展方法
扩展 delphi 泛型 以实现类似lambda功能 , C#中的any count first last 等扩展方法 在C#中对泛型的扩展,输入参数是泛型本身的内容,返回值则是bool.基于这一点, ...
- 【转】【JavaScript】禁用backspace键的后退功能,但是可以删除文本内容
在JavaScript中添加以下代码,就可实现 禁用backspace键的后退功能,但是可以删除文本内容 // 禁用backspace键的后退功能,但是可以删除文本内容 document.onkeyd ...
- 禁用ios7 手势滑动返回功能
禁用ios7 手势滑动返回功能 版权声明:本文为博主原创文章,未经博主允许不得转载. 在有的时候,我们不需要手势返回功能,那么可以在页面中添加以下代码: - (void)viewDidAppear:( ...
- 在x64位的操作系统客户端如何连接oracle ?
好久没更新博客了,上周在x64位的操作系统中安装好了32位或64位的oracle 11g客户端,但用SSIS或Microsoft SQL Server 2012报表生成器3.0去连接oracle 11 ...
- 联想笔记本V470安装Win8.1 X64位系统,关机黑屏、电源灯亮
以前的WIN7 X86系统用了很长时间了,软件业装了很多,现在使用的时候就有点卡了,最近决定重装个系统,后台发现开发的有一个东西要求WIN8 X64位的,就下载了一个准备直接安装了,也从此开始了整整2 ...
随机推荐
- RTC时钟和BKP的配置stm32
摘自:https://blog.csdn.net/gtkknd/article/details/52233605 RTC和后备寄存器通过一个开关供电,在VDD有效的时候选择VDD供电,否则选择VBAT ...
- linux 查询制定目录的制定内容
//.点为查找当前目录 下 的 所有 *.php 文件里 有 hello 的文件 find . -name "*.php" | xargs grep "hello&quo ...
- [RxJS] RefCount: automatically starting and stopping an execution
With the connect() method on a ConnectableObservable, the programmer is responsible for avoiding lea ...
- percona-toolkit源码编译安装
安装依赖软件yum install perl-ExtUtils-CBuilder perl-ExtUtils-MakeMakeryum install perl-Time-HiRes perl-DB ...
- C标签的使用.md
<c:set> 设置变量 <c:set var="a" scope="request" value="${'www'}"/ ...
- vc弹出USB的方法. 附试验通过的代码!
vc弹出USB的方法. 附试验通过的代码! http://blog.sina.com.cn/s/blog_4fcd1ea30100qrzn.html (2011-04-15 10:09:48) boo ...
- ArcGIS Spatial Query
Creates a spatial query which performs a spatial search for features in the supplied feature class a ...
- hadoop调优之一:概述 分类: A1_HADOOP B3_LINUX 2015-03-13 20:51 395人阅读 评论(0) 收藏
hadoop集群性能低下的常见原因 (一)硬件环境 1.CPU/内存不足,或未充分利用 2.网络原因 3.磁盘原因 (二)map任务原因 1.输入文件中小文件过多,导致多次启动和停止JVM进程.可以设 ...
- Java链接Redis时出现 “ERR Client sent AUTH, but no password is set” 异常的原因及解决办法
Java链接Redis时出现 "ERR Client sent AUTH, but no password is set" 异常的原因及解决办法 [错误提示] redis.clie ...
- 使用Perl批量读取文件最后行
使用Perl批量读取文件最后行 面对成百上千个文件,有时我们需要查看它的最后行,单个文件打开将耗费大量时间,而通过Perl提取出最后行,将快速的帮助我们处理繁琐的事务. 特性 整个目录完全遍历,自动提 ...