基本的に、私はこの投稿と同じ問題を実行していますASP.NETで偽装するときにマップされたドライブにアクセスする
私はレガシーWebサイトで作業しており、管理者がサイトのロゴやバナーなどをデスクトップ上の画像ファイルからサーバー上のマップされたドライブに変更できるようにする必要があります。
そのため、彼らのWebサイトは、ドライブに保存する必要があるときはいつでもなりすましを使用しており、正常に機能しています。しかし、私はそれを彼らのテスト環境でも私のテスト環境でも機能させることができません。
何か案は?ユーザーとパスワードを再確認しました(コードはドメインを指定していません)が、それは問題ではありません。
なりすましを処理するコードからの抜粋を次に示します。
public bool ImpersonateUser(String user, String password, String domain)
{
WindowsIdentity tempWindowsIdentity;
IntPtr token = IntPtr.Zero;
IntPtr tokenDuplicate = IntPtr.Zero;
if (RevertToSelf())
{
if (LogonUserA(user, domain, password, LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT, ref token) != 0)
{
if (DuplicateToken(token, 2, ref tokenDuplicate) != 0)
{
tempWindowsIdentity = new WindowsIdentity(tokenDuplicate);
impersonationContext = tempWindowsIdentity.Impersonate();
if (impersonationContext != null)
{
CloseHandle(token);
CloseHandle(tokenDuplicate);
return true;
}
}
}
}
//... rest of the code
そして-消毒された-テスト:
if (impUtility.ImpersonateUser("user", "password", string.Empty))
{
fu.SaveAs(@"C:\Images\" + imgName);
}