Ниже - мой код из сервиса asp.net, который пытается запустить какой-то внешний exe.Он отлично работает из моей Visual Studio на win 7, но не работает на моем сервере (сервер 2008).Myapp.exe сообщает, что у учетной записи, под которой запущена учетная запись, недостаточно прав.
List<ProcInfo> allProcesses = new List<ProcInfo>();
ProcessStartInfo pInfo = new ProcessStartInfo();
pInfo.FileName = binPath + @"\myApp.exe";
pInfo.WindowStyle = ProcessWindowStyle.Hidden;
pInfo.CreateNoWindow = true;
pInfo.UseShellExecute = false;
pInfo.RedirectStandardOutput = true;
string exitMsg = "";
int exitCode = 1;
try
{
using (Process proc = Process.Start(pInfo))
{
exitMsg = proc.StandardOutput.ReadToEnd();
proc.WaitForExit(1000);
exitCode = proc.ExitCode;
}
}
Пул ресурсов на сервере работает под учетной записью с достаточными правами доступа, и я также попытался использовать ту же учетную запись в коде, чтобы запустить службу с теми же учетными данными и тем не менее.
Мне сказали, что учетная запись, под которой запускается рабочий поток asp.net, накладывает некоторые дополнительные ограничения.Таким образом, даже если пул ресурсов работает под соответствующей учетной записью, у вас все равно не будет достаточных привилегий.Я также нашел кое-что об использовании вызовов API pInvoke и win32 в качестве единственного способа запуска внешнего кода из службы asp.net.Но у меня нет никаких знаний по win32 api, и я не нашел объяснений этого.
Я был бы очень благодарен за любой совет / пример, как запустить внешний exe-файл под указанной учетной записью из службы asp.net.