64位系统,用CreateFile没法写入文件到system32文件夹中

64位系统,用CreateFile无法写入文件到system32文件夹中

  SetCurrentDir(“C:\\Windows\\System32”);
  HANDLE handle;
  handle = CreateFile("123.txt",GENERIC_READ|GENERIC_WRITE,FILE_SHARE_READ,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,0);

  if(handle==INVALID_HANDLE_VALUE)
  {
     MessageBox(NULL,"无法写入文件!","Error",MB_OK);
     CloseHandle(handle);
  }


为何无法写入System32里,而却在C:\Windows\SysWOW64这里生成了123.txt。
如果是32位的系统就能写入到C:\Windows\System32,是什么原因?
------解决方案--------------------

#include <Windows.h>
if( Wow64EnableWow64FsRedirection(FALSE) ) 
{
    SetCurrentDir("C:\\Windows\\System32");
    HANDLE handle;
    handle =
CreateFile("123.txt",GENERIC_READ
------解决方案--------------------
GENERIC_WRITE,FILE_SHARE_READ,NULL,OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL,0);
 
   if ( FALSE == Wow64EnableWow64FsRedirection(TRUE) )
     {
      //  Failure to re-enable redirection should be considered
      //  a criticial failure and execution aborted.
      return;
     }
if(handle==INVALID_HANDLE_VALUE)
  {
     MessageBox(NULL,"无法写入文件!","Error",MB_OK);
     CloseHandle(handle);
  }
}


没开bcb直接敲的,你试试吧
------解决方案--------------------
引用:
Quote: 引用:

Minimum supported client       Windows Vista [desktop apps only]

Minimum supported server     Windows Server 2003 [desktop apps only]

Header                                        WinBase.h (include Windows.h)

Library                                         Kernel32.lib

DLL                                              Kernel32.dll 
我用XE5也不会报这个错误,
系统是WIN7 ,是不是BCB6不支持这个函数Wow64EnableWow64FsRedirection


bcb下的API是bcb又封装了一层的,不是直接调用API,bcb6那时候还没这个函数呢

但是你可以自己动态加载kernel32.dll这个链接库  来调用这个函数