管理者ユーザーとして実行されているアプリで、管理者以外のユーザーアカウントのなりすましを行います(LogonUser()
、DuplicateToken()
およびWindowsIdentity.Impersonate()
関数を使用)。このユーザーアカウントは一時的なものであるため、(LoadUserProfile()
ネイティブ関数を使用して)ユーザープロファイルもロードする必要があります。すべてのメソッドは正常に実行され(最後のエラーは設定されていません)、現在のIDは、予想どおり、非管理者ユーザーです。ただし、を使用して新しいプロセスを実行しようとするとSystem.Diagnostics.Process.Start()
、エラーが発生します。
アクセスが拒否されました。
runas / profile / user:mynonadmin userを使用して同じシナリオを手動で実行しようとすると、すべてが正常に機能します。
ここで何が欠けていますか?