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

GetVolumeNameForVolumeMoontPoint()的用户/密码问题(Windows远程驱动器安装?),windows,windows-7,windows-vista,accounts,mount-point,Windows,Windows 7,Windows Vista,Accounts,Mount Point,从Vista工作站,我有一台连接的XP嵌入式计算机,我想在其上以编程方式本地装载卷(例如,将XP Embedded\\MyXPEmbedded\C:\some\path\装载到Vista工作站(装载到C:\mounted\u XPEmbedded\) (这是一个在Vista工作站上运行的管理实用程序,用于维护XP嵌入式工作站上的文件,XP嵌入式工作站是大型设备的一部分。) 我可以从Vista工作站看到XP嵌入式计算机。例如,我可以::getnameinfo()从IP地址解析XP嵌入式计算机的名称

从Vista工作站,我有一台连接的XP嵌入式计算机,我想在其上以编程方式本地装载卷(例如,将XP Embedded
\\MyXPEmbedded\C:\some\path\
装载到Vista工作站(装载到
C:\mounted\u XPEmbedded\

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

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

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

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

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

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

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

其他可能不重要的信息:

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

额外问题:如果我可以在Vista工作站上运行此管理实用程序而无需管理权限,那就太好了,这可能吗?(我知道嵌入式XP的管理登录名/密码)。您可能需要建立至少一个SMB(命名管道/文件共享)从Vista工作站到XP工作站的连接,在任何具有足够权限的共享上,如\\myXP\where或\\myXP\c$甚至\\myXP\icp$,然后才能打开指向“myXP”计算机的任何网络路径

您可以通过使用用户名和密码以编程方式执行此操作。

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

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


至于运行w/o管理权限,这主要与您决定在何处创建本地装载点有关,但您可能只需要使用路径就可以了。使用默认的管理共享(如果禁用“使用简单文件共享”,则会启用此功能)您可以使用
\\MyXPEmbedded\c$\some\path

之类的工具访问嵌入式系统,这非常有用,因此+100。我可以使用
wnetadconnection2()
远程装载,但是
::GetVolumeNameForVolumeMountPoint()
仍然存在登录失败(相同的用户名/密码消息).但是,至少目前我可以获得一个本地驱动器号(我需要解决这个问题,因为我们的许多机器都自动装载所有26个驱动器号,但没有一个可用)。因此,我仍然愿意接受建议。;-)使用
wnetadconnection2()
和用户/密码成功装载远程到本地驱动器号,甚至可以在不重定向到本地驱动器号的情况下保护远程驱动器。仍然失败,原因是
::GetVolumeNameForVolumeMountPoint()
。我投票支持你(回答很好),但是为了额外的提示,我把奖金给了dallbert(我仍在处理登录失败的问题,并显示相同的错误消息)。谢谢你的帮助!