Delphi 禁用x64位系统文件重定向功能
2021-04-23 02:26
标签:details tail 出现 type 指定 ddr phi ble red 在X64系统里面,一些特殊的目录和特殊的注册表键被分为2个独立的部分。对于文件系统来说, 在Win7 64位系统下,调用CopyFile函数进行函数拷贝,如果希望拷贝文件到System32目录下, HKEY_LOCAL_MACHINE\Software下新建一个项,然后使用64位的注册表编辑器查看, var OldWow64RedirectionValue: LongBool; function DisableWowRedirection: Boolean; function RevertWowRedirection: Boolean; http://blog.csdn.net/gj333/article/details/8268379 Delphi 禁用x64位系统文件重定向功能 标签:details tail 出现 type 指定 ddr phi ble red 原文地址:http://www.cnblogs.com/findumars/p/8001465.html
%systemroot%\system32 目录被保留给64位文件使用,而32位文件会被重定向到%systemroot%\SysWOW64目录。
换句话说,所有的32位程序一般情况下只会出现在%systemroot%\SysWOW64目录里面。
任何32位程序试图访问%systemroot%\system32 目录的企图都会被重定向到%systemroot%\SysWOW64目录。
这个是一个默认的行为,除非程序的线程明确的指名需要关闭这种重定向机制。
需要考虑程序是不是也是64位的,否则,程序会被重定向到Syswow64目录下,
为了防止出现文件被重定向,就需要调用函数Wow64DisableWow64FsRedirection取消文件的重定向,
并在完成指定功能后调用Wow64RevertWow64FsRedirection函数进行恢复。
会发现这个项只会出现在HKEY_LOCAL_MACHINE\Software\Wow6432Node键下而不会出
现在HKEY_LOCAL_MACHINE\Software键下,因为HKEY_LOCAL_MACHINE\Software键是专
门用于存放64位程序所使用的注册表数据的,而HKEY_LOCAL_MACHINE\Software\Wow6432Node
键是专门用于存放32位程序所使用的注册表数据的。
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;
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;
上一篇:openstack windows 2008镜像 制作
下一篇:窗体的基类中没有设定大小,所以才不能居中,若要窗体居中,必须使用setfixedsize()函数或者resize()函数设定窗体的大小,居中才能正常使用
文章标题:Delphi 禁用x64位系统文件重定向功能
文章链接:http://soscw.com/index.php/essay/78342.html