以编程方式提供进程权限

时间:2013-11-27 18:14:45

标签: c# asp.net

我正在尝试通过运行此代码在C#中运行jar:

System.Diagnostics.ProcessStartInfo processInfo = new System.Diagnostics.ProcessStartInfo(pathForjre+"java.exe", "-jar "+jar+" "+argsforjar);
processInfo.CreateNoWindow  = true;
processInfo.UseShellExecute = false;
System.Diagnostics.Process proc = new System.Diagnostics.Process();
proc.StartInfo = processInfo;
proc.StartInfo.RedirectStandardOutput = true;
proc.StartInfo.RedirectStandardError = false;

string out = "";
proc.Start();
proc.WaitForExit();
while (!proc.StandardOutput.EndOfStream)
       out += proc.StandardOutput.ReadLine();
proc.Close();
return out;

当jar运行时,我得到一个访问被拒绝的异常,其中包含jar尝试将日志文件写入的路径。我可以从命令行手动运行jar,日志文件没有问题。如何授予进程执行写文件等权限的权限?

2 个答案:

答案 0 :(得分:0)

默认情况下,ASP.NET应用程序不会模拟访问该站点的用户的身份。通常,然后作为本地网络服务帐户运行,除非您特别使用不同的身份运行流程(您可以通过查看Environment.UserName来确定其使用的身份)。

您可以设置网站(或使用模拟)在有权写入该位置的身份下运行,也可以向其当前使用的帐户提供写入权限。

答案 1 :(得分:0)

设置流程的工作目录解决了问题。

proc.StartInfo.WorkingDirectory = path;