64位系统,用CreateFile没法写入文件到system32文件夹中
64位系统,用CreateFile无法写入文件到system32文件夹中
为何无法写入System32里,而却在C:\Windows\SysWOW64这里生成了123.txt。
如果是32位的系统就能写入到C:\Windows\System32,是什么原因?
------解决方案--------------------
没开bcb直接敲的,你试试吧
------解决方案--------------------
bcb下的API是bcb又封装了一层的,不是直接调用API,bcb6那时候还没这个函数呢
但是你可以自己动态加载kernel32.dll这个链接库 来调用这个函数
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直接敲的,你试试吧
------解决方案--------------------
bcb下的API是bcb又封装了一层的,不是直接调用API,bcb6那时候还没这个函数呢
但是你可以自己动态加载kernel32.dll这个链接库 来调用这个函数