2013-10-28 29 views
2

我正在开发一个项目,其中我有一个在Local System Account下运行的Windows服务。允许系统帐户启动模拟进程

我想要做的是启动另一个应该将文件写入磁盘的进程(C++应用程序)。

如果我只是使用Process.Start,那么目标应用程序也运行在Local System Account下,据我所知我不能简单地在任何地方写文件。

由于这个原因,我试图让目标应用程序作为一个不同的用户运行。

ProcessStartInfo psi = new ProcessStartInfo(@"C:\Path\to\Application.exe", parameters); 
psi.UseShellExecute = false; 
psi.UserName = "Username"; 
System.Security.SecureString sec = new System.Security.SecureString(); 
foreach (Char c Password) 
    sec.AppendChar(c); 
psi.Password = sec; 
psi.Domain = "."; 
psi.LoadUserProfile = true; 
Process.Start(psi); 

但我得到一个Win32异常告诉我“访问被拒绝”。 有人知道我能如何实现我的目标吗?

+0

您是否检查过[此](http://stackoverflow.com/q/16805952/806549)问题的答案? – 2013-10-30 22:16:08

回答

0

检查文件系统权限。您正在使用的用户是否具有指定应用程序的执行权限?

+0

是的,它的确如此。我试图使用系统本地管理员帐号 – Thomas

+0

。我已经测试过,它对我来说工作正常......你在哪里得到例外。你有没有尝试执行其他像cmd.exe的东西? –