Vistaワークステーションから、プログラムでボリュームをローカルにマウントしたい(たとえば、XP Embedded\\MyXPEmbedded\C:\some\path\
をVistaワークステーションにマウントする(にマウントするC:\mounted_XPEmbedded\
))接続されたXPEmbeddedコンピューターがあります。
(これは、より大きなデバイスの一部であるXP Embeddedワークステーションでファイルを維持するVistaワークステーションで実行される管理ユーティリティです。)
VistaワークステーションからXPEmbeddedコンピューターを見ることができます。たとえば、::getnameinfo()
XPEmbeddedコンピューターの名前をIPアドレスから解決できます。
ただし、すべての呼び出しはGetVolumeNameForVolumeMountPoint()
失敗し(returns false
)、フォーマットされたメッセージは次の::GetLastError()
ようになります。
Logon failure: unknown user name or bad password
明らかに、これは権限の問題のようです。ただし、Microsoft APIには、これらのボリュームGUIDパスAPIを介してユーザー/パスワードを提供する方法についての説明はありません。
XPEmbeddedマシンのIPアドレスをアドレスバーに入力してVistaワークステーションのWindowsエクスプローラーからXPEmbeddedを「参照」すると、ユーザー名とパスワードの入力を求められます。その後、XPEmbeddedのすべてを確認できます。 (当たり前! プログラムでそれを提供するにはどうすればよいですか?)
質問:GUIDパスAPI(特に)を使用するときに、プログラムでユーザーのログイン/パスワードを提供するにはどうすればよい::GetVolumeNameForVolumeMountPoint()
ですか?
問題の一部は、これらのコンピューターが同じドメインを共有していないことである可能性があります(共有できません。Vistaコンピューターはお客様のドメインに追加され、XPEmbeddedは「非表示」にする必要があります)。
おそらく重要ではないその他の情報:
- VistaワークステーションとXPEmbeddedは同じドメインを共有しません(共有できません)
- アプリケーションは、管理者権限を持つアカウントでVistaワークステーション上で実行されます(これは必要だと思いますか?)
- そのVista管理者アカウントはXPEmbeddedコンピューターに存在しません(XPEmbeddedには別の管理者アカウントがあります)
- 両方のコンピューター間の時計は最新です(セキュリティクレデンシャルは機能するはずです)
- Vistaワークステーションには2枚のネットワークカードがあり、1枚のカードは1枚のネットワークカードしかないXPEmbeddedボックスに直接接続します。
- C ++、MSVS2008を使用
ボーナス質問:管理者権限なしでVistaワークステーションでこの管理ユーティリティを実行できればいいのですが、これは可能ですか?(XP組み込みの管理ログイン/パスワードを知っています。)