我在 ASP.NET 2.0 的模拟上下文中启动进程时遇到问题。
我正在我的 Web 服务代码中启动新进程。IIS 5.1、.NET 2.0
[WebMethod]
public string HelloWorld()
{
string path = @"C:\KB\GetWindowUser.exe";
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.WorkingDirectory = Path.GetDirectoryName(path);
startInfo.FileName = path;
startInfo.UseShellExecute = false;
startInfo.CreateNoWindow = true;
startInfo.ErrorDialog = false;
startInfo.RedirectStandardOutput = true;
startInfo.RedirectStandardError = true;
Process docCreateProcess = Process.Start(startInfo);
string errors = docCreateProcess.StandardError.ReadToEnd();
string output = docCreateProcess.StandardOutput.ReadToEnd();
}
“C:\KB\GetWindowUser.exe”是包含以下代码的控制台应用程序:
static void Main(string[] args)
{
Console.WriteLine("Windows: " + WindowsIdentity.GetCurrent().Name);
}
当我在没有模拟的情况下调用 Web 服务时,一切正常。
当我打开模拟时,以下错误写入 Web 服务代码中的“错误”变量:
未处理的异常: System.Security.SecurityException: 访问被拒绝。\r\n\r\n 在 System.Security.Principal.WindowsIdentity.GetCurrentInternal(TokenAccessLevels desiredAccess, Boolean threadOnly)\r\n 在 System.Security.Principal.WindowsIdentity .GetCurrent()\r\n at ObfuscatedMdc.Program.Main(String[] args)\r\n失败的程序集区域是:\r\nMyComputer
模拟用户是本地管理员,可以访问 C:\KB\GetWindowUser.exe 可执行文件。
当我在 ProcesStartInfo 属性域、用户和密码中明确指定窗口用户时,我收到以下消息:http: //img201.imageshack.us/img201/5870/pstartah8.jpg
是否可以从 asp.net (IIS 5.1) 使用与 ASPNET 不同的凭据启动进程?