64位系统重定向引发的问题

作者: hsf 分类: VC++,心得体会 发布时间: 2018-02-28

问题描述

在Win7 64位系统下,调用CopyFile函数进行函数拷贝,如果希望拷贝文件到System32目录下,需要考虑程序是不是也是64位的,否则,程序会被重定向到Syswow64目录下,为了防止出现文件被重定向,就需要调用函数Wow64DisableWow64FsRedirection取消文件的重定向,并在完成指定功能后调用Wow64RevertWow64FsRedirection函数进行恢复。

官方说明

MSDN中关于函数Wow64DisableWow64FsRedirection的声明:

 

http://msdn.microsoft.com/en-us/library/aa365743(v=vs.85).aspx

MSDN中关于函数Wow64RevertWow64FsRedirection的声明:

http://msdn.microsoft.com/en-us/library/aa365745(v=vs.85).aspx

用例

关于函数的使用,摘一段msdn中的代码:

新问题

这段代码在win764位下调用没有问题,在xp 32位下面就会出现问题,即使加上判断系统是否为64位的代码也会导致程序出现如下图的错误: image

Wow64DisableWow64FsRedirection导致的错误

解决方案

使用动态加载的方式对Wow64DisableWow64FsRedirection和Wow64RevertWow64FsRedirection进行加载,这样问题就解决了

在使用这段代码前最好判断一下系统类型及位数!


如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

一条评论
  • jiangong

    2018年5月11日 14:35

    一个博客能让人流连忘返,讲真,靠的是实力!

发表评论

电子邮件地址不会被公开。 必填项已用*标注