【问题标题】:User/password problems with GetVolumeNameForVolumeMountPoint() (Windows remote drive mount?)GetVolumeNameForVolumeMountPoint() 的用户/密码问题(Windows 远程驱动器安装?)
【发布时间】:2011-06-22 22:28:53
【问题描述】:

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

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

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

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

Logon failure: unknown user name or bad password

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

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

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

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

其他信息,可能不重要:

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

奖励问题:如果我可以在 Vista 工作站上运行此管理实用程序 管理权限会很好,这可能吗? (我知道嵌入式 XP 的管理登录名/密码。)

【问题讨论】:

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


    【解决方案1】:

    在尝试访问嵌入框上的共享之前,请致电 WNetAddConnection2。您可能需要使用MyXPEmbedded\[admin username] 形式的用户名。

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

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

    【讨论】:

    • 非常有帮助,所以 +100。我可以使用WNetAddConnection2() 远程安装,但::GetVolumeNameForVolumeMountPoint() 仍然出现登录失败(相同的用户名/密码消息)。但是,至少我现在可以获得一个本地驱动器号(我需要解决这个问题,因为我们的许多机器会自动安装所有 26 个驱动器号,但没有一个可用)。所以,我仍然愿意接受建议。 ;-)
    【解决方案2】:

    您可能需要在任何具有足够权限的共享上(例如 \\myXP\whatever 或 \\myXp\c$ 或甚至 \\myXP\icp$,之前都能够打开任何针对“myXP”计算机的网络路径。

    您可以使用WNetAddConnection2 Function 以编程方式执行此操作,并带有用户名和密码。

    【讨论】:

    • 使用WNetAddConnection2() 和用户/密码成功安装远程到本地驱动器号,甚至可以在不重定向到本地驱动器号的情况下保护远程驱动器。 ::GetVolumeNameForVolumeMountPoint() 仍然失败。我投票给你(好答案),但赏金给 dallbert 以获得额外的提示(我仍在使用相同的错误消息处理登录失败)。感谢您的帮助!
    猜你喜欢
    • 2013-08-31
    • 2011-09-10
    • 2018-02-27
    • 2010-10-25
    • 1970-01-01
    • 2016-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多