2011-01-05 3 views
4

ネットプロセスPがWindowsアカウントA1で実行されていることを前提としています。スレッド(Pで実行中)がA1よりも(Thread.CurrentPrincipal.Identityで取得された)他のアイデンティティーで実行されている場合、システムリソース(ファイルなど)にアクセスするときにはまだA1と同じ権限がありますか? スレッドのID

あなたは

+0

スレッドはお互いに実行されません! –

+0

私は、スレッドが別のスレッド内で実行されていることを暗示しませんでした。スレッドがプロセス内で実行されていると言いました(または、より正確にはスレッドはプロセスPによってホストされているアプリケーションドメイン内で実行されています) – user437291

答えて

5

私はプロセスIDからのアクセス権を「継承」するために異なるIDを持っているスレッドを期待していない感謝します。

私が偽装テストを実行したことを確認してください。ここでサンプルを使用してくださいWindowsIdentity.Impersonate別のスレッドで次のコードを実行しました。

WindowsIdentity newId = new WindowsIdentity(safeTokenHandle.DangerousGetHandle()); 
    Thread.CurrentPrincipal = new WindowsPrincipal(newId); 
    string foo = System.IO.File.ReadAllText (@"test.txt"); 
    Console.WriteLine(foo); 

プロセスのIDにはtest.txtを読み取る権限がありますが、newIDが失敗した場合は失敗します。

+0

ありがとう – user437291

関連する問題