2

从 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 上的所有内容(呃! 我如何以编程方式提供它?)

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

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

其他信息,可能并不重要:

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

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

4

2 回答 2

2

您可能需要在任何具有足够权限的共享上建立从 Vista 工作站到 XP 工作站的至少一个 SMB(命名管道/文件共享)连接,例如 \\myXP\whatever 或 \\myXp\c$ 甚至 \\ myXP\icp$,在此之前能够打开任何针对“myXP”计算机的网络路径。

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

于 2011-06-25T14:31:47.753 回答
2

WNetAddConnection2在尝试访问嵌入框上的共享之前,请致电。您可能需要以MyXPEmbedded\[admin username].

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

至于在没有管理员权限的情况下运行,这主要与您决定创建本地安装点的位置有关,但您可能只使用UNC路径就可以逃脱。使用默认管理共享(如果“使用简单文件共享”被禁用,则启用),您可以使用类似\\MyXPEmbedded\c$\some\path.

于 2011-06-30T18:17:07.500 回答