2010-09-10 107 views
1

我知道我可以模拟Windows帐户使用: http://msdn.microsoft.com/en-us/library/chf6fbt4.aspx如何模仿WellKnownSidType?

但是我怎么去冒充WellKnownSidType帐户?

SecurityIdentifier sid = new SecurityIdentifier(WellKnownSidType.LocalSystemSid, null); 
NTAccount account = sid.Translate(typeof(NTAccount)) as NTAccount; 
if (account != null) 
{ 
    //Impersonate here??? 
} 
+1

试试吧。如果它不起作用,请回来。 – 2010-09-10 04:54:48

+0

@Steven尝试什么? – 2010-09-10 04:59:22

+0

我已经添加了更多明确的指示作为答案。 – 2010-09-10 21:19:24

回答

2

首先,你将无法模仿内置帐户,如“网络服务”或“本地服务”,除非你是“本地服务”帐户下运行的,据我知道能只能由操作系统完成。

以下职位提供了一个可能的解决方案上面的点(我没有尝试,只是GOOGLE了它之前,我开始书面方式这一切我自己),但它看起来是合理的。

http://geek.hubkey.com/2008/02/impersonating-built-in-service-account.html

一旦“本地服务”帐户下运行,你只需要使用LogonUser的(在上面的链接所示)利用众所周知的SID的帐户名登录,然后冒充令牌。

我看到的,可以被允许与桌面交互服务上面运行的“CMD.EXE”的链接,请注意“交互与桌面”的功能已被弃用。

+0

我认为你对于什么样的模仿是不可能的。你可能想看看我的答案中的第二个链接,因为它指出了一个关于这个主题的特别全面的文章。 – 2010-09-10 21:20:48

+0

@Steven,即用于在系统帐户下运行的ASP.NET应用程序,IIS服务作为Windows服务运行,并使用命名管道与w3wp.exe或aspnet_iis.exe进行通信,因此两个进程都在服务帐户下运行。我指的是用于交互式用户应用程序,从命令提示符开始。 – 2010-09-10 21:35:10

+0

然后,CLI应用程序需要先模拟一个高度可信的非服务帐户,然后再赋予它使用委托模拟本地系统的能力。当然,一旦它有能力做前者,后者几乎没有必要。 – 2010-09-10 21:39:44