In Windows, wenn Sie eine Eingabeaufforderung geöffnet (cmd.exe), die Registrierungsschlüssel:Start cmd.exe Problem
HKLM \ Software \ Microsoft \ Command Processor
HKCU \ Software \ Microsoft \ Command Prozessor
werden auf einen Wert überprüft, der als "AutoRun" bezeichnet wird. Wenn diese Datei gefunden wird, wird die im Wert genannte Stapeldatei ausgeführt, die eine autoexec-ähnliche Funktionalität bietet. Wenn beide Schlüssel AutoRun-Werte enthalten, werden beide ausgeführt. Genial!
Ich verwende Process.Start
, um cmd.exe auszuführen, und das AutoRun-Verhalten tritt nicht auf. Mein aktueller Code ist:
private openShell(string folder)
{
ProcessStartInfo startInfo = new ProcessStartInfo()
{
FileName = Environment.GetEnvironmentVariable("COMSPEC") ?? "cmd.exe",
Arguments = "/k cd \"" + folder + "\"",
UseShellExecute = true
};
try
{
using (var exeProcess = System.Diagnostics.Process.Start(startInfo))
{
exeProcess.WaitForExit();
}
}
catch
{
// Log error.
}
}
Ich habe auch versucht, es auf die einfachste Form reduziert:
System.Diagnostics.Process.Start("cmd.exe");
Alles, was ich funktioniert perfekt versuchen (in, dass ein Befehlsfenster gestartet wird), aber die AutoRun Verhalten tritt nie auf.
Wo ist der Code, der die Registrierung überprüft? – bitxwise
Es funktioniert, ich habe kein Problem im Code gefunden –
Wenn Sie Ihre "Autorun" nur in den HKLM-Schlüssel, Ihr Problem möglicherweise Virtualisierung gesetzt haben. Hast du etwas in die HKCU gesteckt und nichts bekommen? Haben Sie dies auch manuell getestet, indem Sie die Eingabeaufforderungen gestartet haben, sodass Sie wissen, dass das Problem nur darin besteht, wie Ihr Code sie startet? –