1

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

アクセスが拒否されました。

runas / profile / user:mynonadmin userを使用して同じシナリオを手動で実行しようとすると、すべてが正常に機能します。

ここで何が欠けていますか?

4

2 に答える 2

0

しばらく前にこれに遭遇しました。

偽装されたユーザーは、Process オブジェクトに設定された CWD にアクセスできませんでした。ProcessStartInfo オブジェクトを作成し、偽装ユーザーがアクセスできる場所に作業ディレクトリを設定します。

于 2015-03-24T18:47:40.577 に答える