2009-10-09 94 views

回答

1

您需要获取当前登录用户的令牌并调用CreateProcessAsUser。请记住,使用快速用户切换(FUS)可以有多个用户登录到本机,因此您必须选择要启动过程的用户。

要枚举用户会话,您可以使用WTSEnumerateSessions API。使用它来查找当前的会话标识符。然后调用WTSQueryUserToken获取当前登录用户的令牌。使用此令牌,您可以使用CreateProcessAsUser。

不幸的是,您将需要对所有这些方法调用使用P/Invoke。如果你有用户名和密码,那么你可以简单地使用System.Diagnostics.Process.Start()重载。

+0

谢谢克里斯。我已经编码并且失败了; Marshal.GetLastWin32Error()将错误代码报告为3(我相信这意味着权限不足)。任何想法可能会导致失败(远射问题)。 – DEH 2009-10-09 17:10:50

相关问题