2010-07-02 101 views
2

我正在以用户 - 本地系统的身份运行Windows服务(使用.NET编写)。以LocalSystem身份运行的Windows服务,但需要以当前登录的用户身份启动进程

从服务,我需要启动一个进程,但作为当前登录的用户。如果我使用Process.Start(process_name),默认情况下它将以服务的权限运行 - 即LocalSystem。我该如何模拟当前登录的用户并在相同的情况下运行该进程?

编辑:我将无法访问用户凭据 - 我不知道的登录用户

EDIT2密码:在标记为答案后第2的评论是什么帮助。

回答

0

一个类似的问题已经被问Setting Service to Run as Current User

+0

是的,这有点不同。我安装并运行我的服务 - LocalSystem。我需要这种服务,它使用提升的权限运行,以启动具有较低权限的进程 - 即当前用户。 – Sameet 2010-07-02 14:52:30

+1

啊我看到了,好的,让服务创建一个计划任务来运行你的程序呢?或者在启动菜单中输入一个条目,然后登录时运行? – w69rdy 2010-07-02 15:15:53

0

可以使用ProcessStartInfo启动一个进程 - 它可以让你设置新进程的用户名和密码,以启动:

ProcessStartInfo startInfo = new ProcessStartInfo("IExplore.exe"); 
startInfo.UserName = myUserName; 
startInfo.Password = myUserPassword; 
startInfo.Arguments = "www.northwindtraders.com"; 
Process.Start(startInfo); 

更新:(以下更新质疑)

可能能够使用RunAs为此 - 如果其他人提供证书。

+0

哦对不起,忘了提及 - 我不能依靠传递用户凭据 - 没有密码:) – Sameet 2010-07-02 14:49:35

相关问题