【问题标题】:C++ Program cannot see mapped drivesC++ 程序看不到映射的驱动器
【发布时间】:2011-01-18 17:22:21
【问题描述】:

我正在使用 Visual Studio 2010 在 Windows 7 上编写一个非托管 C++ 控制台应用程序。我遇到了一个问题,我的本地计算机或网络位置上的文件工作正常,但我的代码在映射驱动器上看不到任何内容。我可以将这个问题简单地传递给以下 2 行的程序:

const WCHAR * libPath = _T("L:\MyFiles\myfile.txt"); DWORD fa = GetFileAttributes(libPath);

fa 返回为 0xFFFFFFFF,L 是映射驱动器,L:\MyFiles\myfile.txt 是有效的文本文件。

如何访问映射的驱动器?

【问题讨论】:

  • 该返回值为 INVALID_FILE_ATTRIBUTES。失败时 GetLastError() 会给你什么?此外,您应该使用 \\ 来转义 \,如 _T("L:\\MyFiles\\myfile.txt");,您的真实代码中有吗?
  • GetLastError 给我 3,即“系统找不到指定的路径。”
  • 我试过 \\ 和 \ 以及其他组合。
  • 我使用的是 64 位 Windows 7

标签: mapped-drive


【解决方案1】:

一种可能性是您的应用程序在提升模式下运行(即选择了Run as administrator)。更详细地讨论了这个问题here

解决方案是使用net use 挂载驱动器或将其合并到您的注册表中:

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System]
"EnableLinkedConnections"=dword:00000001

请注意,进行上述更改后需要重新启动。

【讨论】:

    【解决方案2】:

    这是 Visual Studio 的问题。 “在不调试的情况下启动”与在 Windows 7 上从资源管理器运行不同。该程序从 Windows 资源管理器启动时运行良好。这是由于不同的 UAC 权限造成的。

    【讨论】:

      猜你喜欢
      • 2017-03-28
      • 2014-09-04
      • 1970-01-01
      • 2017-08-22
      • 1970-01-01
      • 2019-07-28
      • 1970-01-01
      • 2017-07-19
      • 2011-02-07
      相关资源
      最近更新 更多