リモート マシンの仮想ディスク サービス (VDS) にアクセスしようとしています。Windows ファイアウォール ルールの欠落 (RPC が利用できない) に関連するいくつかの問題を解決した後、サービスをクエリすると UnauthorizedAccessException (E_ACCESSDENIED) が発生します。
これは私のコードです:
// Create the service loader
VdsServiceLoader loaderClass = new VdsServiceLoader();
IVdsServiceLoader loader = (IVdsServiceLoader)loaderClass;
Console.WriteLine("Got Loader");
// Load the vds service
try
{
loader.LoadService(<Hostname>, out service);
}
catch (UnauthorizedAccessException)
{
// E_ACCESSDENIED
Console.WriteLine("Need admin rights");
return;
}
ローカル サービスにアクセスすると、管理者権限で実行しなかったときにこの例外がスローされます。管理者権限で実行すると、問題なくローカル VDS 情報を取得できます。
サービスにアクセスするには、どこかにユーザー名/パスワードを指定する必要があると思いますが、どこにあるのかわかりません。または、リモート マシン上のこのサービスへのアクセス権を付与します。
このような提案された ImpersonateUser も試しました
if (ImpersonationAPI.LogonUser(pUsername, pDomain, pPassword, LogonType.LOGON32_LOGON_NEW_CREDENTIALS, LogonProvider.LOGON32_PROVIDER_WINNT50, ref token) != 0)
{
if (ImpersonationAPI.DuplicateToken(token, SecurityImpersonationLevel.SecurityImpersonation, ref tokenDuplicate) != 0)
{
tempWindowsIdentity = new WindowsIdentity(tokenDuplicate);
LoadUserProfile(tokenDuplicate, pUsername);
m_ImpersonationContext = tempWindowsIdentity.Impersonate();
...
}
}
また、フラグ LOGON32_LOGON_INTERACTIVE、LOGON32_LOGON_NETWORK、LOGON32_LOGON_NETWORK_CLEARTEXT、および LOGON32_LOGON_SERVICE も試しました。
どちらのマシンも Win 7 を実行しています。
ありがとう!