我注意到,如果路径参数 CreateFile 功能目标 \Windows\System32\ 话是失败的,与以下错误代码 ERROR_PATH_NOT_FOUND.

该文件的道路是正确的,我文件夹的所有者,所以问题是为什么叫失败?有没有MS加入特殊的政策禁止的文件夹,从被访问的?

样本代码:

TCHAR szFile[MAX_PATH];
PathCombine(szFile, g_szSystemDirectory, "settings.ini");

HANDLE hFile = CreateFile(szFile,
                          GENERIC_READ,
                          0,
                          NULL,
                          OPEN_EXISTING,
                          0,
                          NULL);

if (hFile == INVALID_HANDLE_VALUE)
{
    printf("INVALID FILE: %i", GetLastError());
    return FALSE;
}
有帮助吗?

解决方案

  1. 我们可以看到一些例代码?
  2. 你有指定的驱动,即"C:\Windows\System32\"
  3. 你想打开文件内system32?
  4. 这不会发生在Windows7仅?和
  5. 为什么你需要修改任何东西里面system32在首位?

Billy3

其他提示

如果是在64位的操作系统,然后调用Wow64DisableWow64FsRedirection运行32位应用程序()之前,你来的CreateFile通话将改为“C:\ Windows \ System32下”,而不是“C:\ WINDOWS \ SYSWOW64”这可能是发生了什么给你。

使用Windows XP这两个管理员/标准的帐户不需要行政权获得设备处理。

这已改变了在Vista视窗7(UAC)那里你必须具有管理员权获得设备处理。

一些方案是:

  1. 使用的服务
  2. 使用COM仰的名字
  3. 使用清单

注:如果你仅仅需要查询的统计数据信息从一个装置,这并不需要行政权。当使用 CreateFile(), 指定零(0)的 dwDesiredAccess 参数。

你可能程序需要以管理员身份运行。你必须升级你的特权,即使您是管理员。当你运行程序右键单击,然后单击“以管理员身份运行”,或编辑属性,选择始终以管理员身份运行。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top