Я пытаюсь запустить командный файл на сервере со страницы ASP.NET. Пакетный файл должен быть запущен под определенной учетной записью пользователя, чтобы быть успешным.
Мой код для запуска пакетного файла без , он работает под определенной учетной записью, работает нормально (когда он работает под SYSTEM), но пакетный файл не выполняется успешно.
Что мне нужно сделать, это запустить его под определенной учетной записью (Администратор) на сервере, но когда я добавляю код для запуска под этой учетной записью, я получаю исключение:
System.ComponentModel.Win32Exception
(0x80004005): доступ запрещен в
System.Diagnostics.Process.StartWithCreateProcess (ProcessStartInfo
startInfo) в
System.Diagnostics.Process.Start ()
Аккаунт определенно существует (он единственный на этом компьютере) и обладает правами администратора. Кроме того, если я войду на физический компьютер и запусту файл .bat вручную под учетной записью, он будет работать нормально.
Вот мой код:
Process m_oProc = new Process();
ProcessStartInfo oInfo = new ProcessStartInfo(batchFileLocation);
oInfo.WorkingDirectory = Path.GetDirectoryName(batchFileLocation);
oInfo.UseShellExecute = false;
oInfo.RedirectStandardOutput = true;
oInfo.RedirectStandardError = true;
// ------ This code seems to cause the exception ------ //
string prePassword = "myadminpassword";
SecureString passwordSecure = new SecureString();
char[] passwordChars = prePassword.ToCharArray();
foreach (char c in passwordChars)
{
passwordSecure.AppendChar(c);
}
oInfo.UserName = "admin";
oInfo.Password = passwordSecure;
// ---------------------------------------------------- //
m_oProc.StartInfo = oInfo;
if (m_oProc.Start())
{
log.Info("Debug: Process has started successfully");
}
else
{
log.Error("Some error occured starting the process.");
}
Может кто-нибудь сказать мне, что я делаю не так?