windows - GetVolumeNameForVolumeMountPoint() 的用户/密码问题(Windows 远程驱动器安装?)

标签 windows windows-7 windows-vista accounts mount-point

在 Vista 工作站上,我连接了一台 XP Embedded 计算机,我希望以编程方式在本地挂载一个卷(例如,挂载 XP Embedded \\MyXPEmbedded\C:\some\path\到 Vista 工作站(安装到 C:\mounted_XPEmbedded\)。

(这是一个在 Vista 工作站上运行的管理实用程序,用于维护 XP Embedded 工作站上的文件,该工作站是较大设备的一部分。)

我可以从 Vista 工作站看到 XP Embedded 计算机。例如,我可以 ::getnameinfo() 从 XP Embedded 计算机的 IP 地址解析其名称。

但是,对 GetVolumeNameForVolumeMountPoint() 的所有调用都会失败(返回 false),来自 ::GetLastError() 的格式化消息为:

Logon failure: unknown user name or bad password

很明显,这似乎是一个权限问题。但是,我在 Microsoft API 中没有看到有关如何通过这些卷 GUID 路径 API 提供用户/密码的讨论。

当通过在地址栏中输入 XP Embedded 计算机的 IP 地址从 Vista 工作站上的 Windows 资源管理器“浏览”XP Embedded 时,系统会提示我输入用户名和密码,之后我可以看到上面的所有内容XP Embedded(呃!我如何以编程方式提供它?)

问题:在使用 GUID 路径 API(特别是 ::GetVolumeNameForVolumeMountPoint() )时,如何以编程方式提供用户登录名/密码?

部分问题可能是这些计算机不共享同一个域(他们不能,Vista 计算机将添加到客户的域中,XP Embedded 必须“隐藏”)。

其他信息,可能不重要:

  • Vista 工作站和 XP Embedded 不共享同一个域(它们不能)
  • 应用程序在具有管理权限的帐户下在 Vista 工作站上运行(我认为这是必需的?)
  • XP Embedded 计算机上不存在该 Vista 管理帐户(XP Embedded 有不同的管理帐户)
  • 两台计算机之间的时钟都是最新的(安全凭据应该有效)
  • Vista 工作站有两个网卡,其中一个卡直接连接到 XP Embedded 盒子,后者只有一个网卡
  • 使用 C++、MSVS2008

额外问题:如果我可以在没有管理权限的情况下在 Vista 工作站上运行此管理实用程序,那就太好了,这可能吗? (我知道嵌入式 XP 的管理登录名/密码。)

最佳答案

调用WNetAddConnection2在尝试访问嵌入式盒子上的共享之前。您可能需要 MyXPEmbedded\[admin username] 形式的用户名。

如果您之前已尝试连接到嵌入式盒子,则可能会遇到问题。要删除您可以使用的任何延迟连接,请从命令行 - net use/delete 选项。您还可以在运行程序之前建立与网络的连接以进行调试。

至于在没有管理员权限的情况下运行,这主要与您决定创建本地挂载点的位置有关,但您可能只需使用 UNC 就可以逃脱惩罚。小路。使用默认的管理共享(如果禁用“使用简单文件共享”则启用),您可以使用 \\MyXPEmbedded\c$\some\path 之类的内容访问嵌入式系统。

关于windows - GetVolumeNameForVolumeMountPoint() 的用户/密码问题(Windows 远程驱动器安装?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6447315/

相关文章:

C# - 确定用户是否正在移动窗口

javascript - 正则表达式可视化工具

windows-vista - 在 Vista 中删除 .svn 文件夹时遇到问题

c# - 以编程方式创建 Windows 用户 c# .net(使用 PricinpalUser/CreateProfile)

c++ - MingW c++ 编译错误 Win 7 x64

java - UAC 和 Java

c# - 如果路径 protected ,请求 Windows Vista UAC 提升?

windows - FFmpeg Batch 同时遍历两个不同文件夹中的文件

c++ - 在 Windows 下,您如何识别当前的控制台用户,然后对该用户进行注销?

c++ - CMake:在 Windows 上找不到编译器