自動起動用のマネージャーを作成しようとしています。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 秒後に実行されます。
現在、プログラムのうち 3 つが起動せず、System.ComponentModel.Win32Exception
「Das System kann die angegebene Datei nicht finden.」というメッセージが表示されます。(「システムは指定されたファイルを見つけることができませんでした。」)
しかし、XML は正しく解析され、開始したいファイルは XML ファイルで指定した場所にあります。
この問題は、次の 3 つのファイルのみに関係して
い
ます
。
問題はファイルの場所にあると思います: それらはすべて 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);
}
}