System.ComponentModel.Win32Exception при запуске процесса - файл не найден, но файл существует
Я пытаюсь создать менеджер для моих автозапусков. Он должен прочитать файл XML, а затем запустить мои программы с произвольной задержкой. Например:
<startup id="0">
<name>Realtek Audio Manager</name>
<process arguments="-s">C:\Program Files\Realtek\Audio\HDA\RtkNGUI64.exe</process>
<delay>5</delay>
</startup>
Это запускает указанный процесс (C:\Program Files\...\RtkNGUI64.exe -s
) через 5 секунд.
Теперь три программы не запускаются, давая мнеSystem.ComponentModel.Win32Exception
: "Das System kann die angegebene Datei nicht finden." («Системе не удалось найти указанный файл.»)
Но XML анализируется правильно, и файл, который я хочу запустить, находится в месте, указанном в файле XML.
Проблема касается только этих трех файлов:
Intel HotkeysCmd - C: \ Windows \ System32 \ hkcmd.exe
Лоток Intel GFX - C: \ Windows \ System32 \ igfxtray.exe
Intel Persistance - C: \ Windows \ System32 \ igfxpers.exe
Я думаю, что проблема связана с расположением файлов: все они находятся в C: \ Windows \ System32, а все остальные работающие программы расположены вне (C: \ Program Files, C: \ Program Files (x86) , D: \ Program Files,%AppData%
)
Нужно ли давать моей программе какие-то права доступа для запуска программ в C: \ Windows \ System32? Как бы я это сделал?
Если нет, то по какой причине я получаю ошибки в этих программах?
РЕДАКТИРОВАТЬ - мой код:
delegate(object o)
{
var s = (Startup) o;
var p = new System.Diagnostics.Process
{
StartInfo =
new System.Diagnostics.ProcessStartInfo(s.Process, s.Arguments)
};
try
{
s.Process = @"C:\Windows\System32\igfxtray.exe"; // For debugging purposes
System.Diagnostics.Process.Start(s.Process);
icon.ShowBalloonTip(2000, "StartupManager",
"\"" + s.Name + "\" has been started.",
System.Windows.Forms.ToolTipIcon.Info);
}
catch (System.ComponentModel.Win32Exception)
{
icon.ShowBalloonTip(2000, "StartupManager",
"\"" + s.Name + "\" could not be found.",
System.Windows.Forms.ToolTipIcon.Error);
}
}