2011-01-05 66 views
4

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

谢谢

+0

线程不会在对方内运行! – 2011-01-05 21:10:16

+0

我并不是暗示线程正在另一个线程中运行。我说线程是在一个进程内运行的(或者更准确的说...线程在进程P托管的应用程序域内运行) – user437291 2011-01-05 21:17:38

回答

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不会失败。

+0

谢谢你的帮助 – user437291 2011-01-07 13:18:59