2011-01-05 4 views
4

Предположим, что Net-процесс P работает под учетной записью Windows A1. Я предполагаю, что если поток (работает в пределах P) работает под другим идентификатором (полученным через Thread.CurrentPrincipal.Identity), чем A1, он по-прежнему имеет те же права, что и A1 при доступе к системным ресурсам (например, файлы и т. Д.)?Идентичность нити

спасибо

+0

нити не работают внутри друг друга! –

+0

Я не подразумевал, что поток работал в другом потоке. Я сказал, что нить работает в процессе (или, точнее, в потоке, который выполняется в домене приложения, размещенном в процессе P) – user437291

ответ

5

я бы не ожидал потока, который имеет другую идентичность «наследовать» разрешение от идентификатора процесса.

Просто, чтобы убедиться, что я провел тест на олицетворение. Пример здесь WindowsIdentity.Impersonate Я использовал следующий код в другом потоке.

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

Несмотря на то, что идентификатор процесса имеет права на чтение test.txt, если новыйID не сработает.

+0

благодарю вас за помощь – user437291

Смежные вопросы