线程的身份

时间:2011-01-05 19:40:57

标签: .net multithreading identity

假设网络进程P在Windows帐户A1下运行。我假设如果线程(在P内运行)在某个其他身份(通过Thread.CurrentPrincipal.Identity获得)下运行而不是A1,则在访问系统时它仍具有与A1相同的权限资源(如文件等)?

谢谢

1 个答案:

答案 0 :(得分: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);

即使进程的ID有权读取test.txt,如果newID没有,它也会失败。