System.ComponentModel.Win32Exception (0x80004005): Schnittstelle Nicht unterstützt
Habe ein Problem mit einem Programm, das gestartet wird, indem ein windows-Dienst.
Der Ablauf ist
- exe startet
- benennt sich um *.bak
- den Download der neuesten version von sich selbst
- Anrufe
Restart()
- hat eine Reihe von Datei-und SQL-Operationen (Aktualisierung unserer Haupt-software-suite)
- ruft dann
Restart()
- Ablauf beginnt erneut. WENN es keine software-updates für die Haupt-suite startet er nicht
das alles funktioniert perfekt, außer für eine Kunden-Website
Auf einer Website, die ersten Restart()
funktioniert, aber die zweite wirft immer eine exception.
System.ComponentModel.Win32Exception (0x80004005): Schnittstelle Nicht unterstützt
System.Diagnostik.Prozess.StartWithShellExecuteEx(ProcessStartInfo startInfo)
System.Diagnostik.Prozess.Start()
bei UpdateCompanionService.Programm.Restart()
Es ist eine WS2008 standard-server.
public static void Restart()
{
try
{
var procPath = Path.Combine(Config.UpdateCompanionDirectory, "UpdateCompanionService.exe");
Logger.Debug("Starting procecss {0}", procPath);
var proc = new Process
{
StartInfo = {FileName = procPath, WorkingDirectory = Config.UpdateCompanionDirectory, Arguments = "/noupdate", UseShellExecute = true}
};
proc.Start();
Environment.Exit(-1);
}
catch (Exception e)
{
Logger.Fatal("Error restarting update companion", e);
}
}
- Wie bist du zu dieser Schlussfolgerung kommt, dass seine Maschine "ziemlich kaputt"?
- Der stack-trace, erzählt die Geschichte.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen Sie es mit
Seine bekannt, um dieses problem zu beheben
Können Sie versuchen
UseShellExecute = false
im code.Ich erinnere mich an einige eigene Probleme, vor langer Zeit, wo ich selbst kompiliert das original .NET framework-code, um herauszufinden, dass das setzen dieses flags verwendet einen völlig anderen Methode zu starten.
Für mich scheint es, brauchen Sie nicht
UseShellExecute = true
in Ihrem Fall.Wenn dies nicht funktioniert, sollten Sie überprüfen, Sicherheits-Kontext /GPO-Einstellungen, z.B.
"Ist dieser Dienst läuft als SYSTEM-oder als (Domänen -) Benutzer ?"
Auch sicher sein, dass Ihre neue EXE mit allen zusätzlichen Komponenten ist "bereit" zu der Zeit, wo Sie versuchen, starten Sie es (vielleicht verwenden Sie einen hintergrund-thread, die nicht abgeschlossen).
Ich hatte ähnliches Problem mit einer ausführbaren Datei, die aufgerufen wird, die durch eine Webanwendung auf dem IIS ausgeführt wird. In meinem Fall war die Lösung die Anwendung neu zu starten-Pool für aktuelle Web-Anwendung.