根据msdn:
ASP.NET网页和服务器控制代码在上下文中执行 Web服务器上的ASP.NET辅助进程。如果您使用“开始” ASP.NET网页或服务器控件中的方法,新进程 使用受限权限在Web服务器上执行。该 进程不会在与客户端浏览器相同的上下文中启动,并且 无法访问用户桌面。
哪个 帐户正好是“受限权限”?
示例:
RoyiN
BobK
用户为W3WP
(不是网络,也不是ApplicationPoolIdentity)。在C#中,我UserA
( Process.start("....cmd.exe...")
凭据为:“Startinfo
”,“Martin
”,“{{1} }“)
最终运行Password
的效率Domain
是谁?
“限制权限”实际上与谁有关?
答案 0 :(得分:5)
模拟不会在这里发挥作用,因为在引擎盖下,Process.Start
依赖于两个本机Win32调用之一:
如果提供了ProcessStartInfo.UserName:
CreateProcessWithLogonW(startInfo.UserName, startInfo.Domain, ...)
如果没有:
CreateProcess(null, cmdLine, null, null, true, ...)
传递给CreateProcess的null
是可能咬你的;来自MSDN:
结构的lpSecurityDescriptor成员指定主线程的安全描述符。如果lpThreadAttributes为NULL 或者lpSecurityDescriptor为NULL,该线程获得默认安全性 描述。线程的默认安全描述符中的ACL 来自流程令牌。
请注意,它来自进程令牌,而不是调用线程 - 模拟身份没有机会加入聚会,因为它绑定到线程。
答案 1 :(得分:2)
我相信MSDN条目指的是即使启用了模拟并且您处于特定用户上下文中,新进程也将由进程生成 - 并且模拟发生在线程级别。也就是说,我相信它会在'UserA'背景下运行。
以下是相关的KB条目:
http://support.microsoft.com/kb/889251
请注意,相同的条目描述了如何使用CreateProcessAsUser来允许模拟。
答案 2 :(得分:2)
正如我在尝试解决this problem时发现的那样,许多小事情都有所不同。它可能在RoyiN下运行,但你可能会发现USERPROFILE设置为C:\ Windows \ system32 \ config \ systemprofile,而不是你的/ Users / RoyiN文件夹。
根据您的尝试,可能会导致一些问题。在我的情况下,启动一个git进程将永远挂起。 USERPROFILE和HOME不仅错误,我还发现被模拟的用户不能很好地使用映射的网络驱动器。