我有一个安装为“SYSTEM”的服务,它调用一个进程,但我需要以用户身份运行它。
try
{
System.Security.SecureString ssPwd = new System.Security.SecureString();
System.Diagnostics.ProcessStartInfo proc = new System.Diagnostics.ProcessStartInfo();
proc.UseShellExecute = false;
proc.Verb = "runas";
proc.UserName = "Stevie";
string p = "Stevie";
for (int x = 0; x < p.Length; x++)
{
ssPwd.AppendChar(p[x]);
}
proc.Password = ssPwd;
proc.FileName = @"C:\DailyTask\GenFile.exe";
proc.Arguments = "-csv";
System.Diagnostics.Process.Start(proc);
}
catch(Exception errrr)
{
m.log(errrr.ToString());
}
我使用ProcMon来查看它是否在不同的用户下运行但它不会启动我得到以下错误。
Sunday, January 24, 2016 --- System.ComponentModel.Win32Exception (0x80004005):Access is denied
at System.Diagnostics.Process.StartWithCreateProcess(ProcessStartInfo startInfo)
at System.Diagnostics.Process.Start()
at System.Diagnostics.Process.Start(ProcessStartInfo startInfo)
at DirectoryWatcher.MyPOSystemWatcher.Open_f(String filePath)
我对目录及其内容拥有完整的权利。 我已经将它分享给“Everyone”并赋予它读/写访问权限。
不确定我还缺少什么。我可以手动运行该过程而不会出现任何错误。