Laden...

programmatischen Verwendung von signtool.exe: No certificates were found that met all the given crit

Erstellt von theYoRecords vor 11 Jahren Letzter Beitrag vor 11 Jahren 5.514 Views
T
theYoRecords Themenstarter:in
73 Beiträge seit 2012
vor 11 Jahren
programmatischen Verwendung von signtool.exe: No certificates were found that met all the given crit

Hallo!

Ich bin gerade dabei eine grafische Oberfläche fürs Signtool zu entwickeln, aber stehe vor einem rätselhaften Problem:

Wenn ich das Signtool in einem neuen Prozess starte und meine Argumente übergebe, bekomme ich die Meldung > Fehlermeldung:

SignTool Error: No certificates were found that met all the given criteria

Was äußerst eigenartig ist, da ich erstens im Schritt davon noch sicherstelle, dass das angegebene Zertifikat existiert. Ich habe mir auch schon den verwendeten Command ausgeben lassen und den dann manuell im CMD eingegeben. Da trat dieses Problem nicht auf.
Diesen Tatsachen zufolge kann es höchstens noch sein, dass bei der Übergabe der Argumente an den Prozess irgendwas falsch läuft. Die Frage ist nur was.
Hat jemand eine Idee was da passieren könnte?

Hier ist der anscheinend betroffene Code:


                ProcessStartInfo pi = new ProcessStartInfo
                {
                    CreateNoWindow = true,
                    FileName = Core.Settings.Signtool.FilePath,
                    Arguments = a == Action.Sign ? data.GetSignCommand(f.FullPath) : data.GetVerifyCommand(f.FullPath),
                    RedirectStandardOutput = true,
                    RedirectStandardError = true,
                    UseShellExecute = false,
                    WindowStyle = ProcessWindowStyle.Hidden
                };

                using (Process p = new Process {EnableRaisingEvents = true, StartInfo = pi})
                {
                    p.OutputDataReceived += p_OutputDataReceived;
                    p.ErrorDataReceived += p_ErrorDataReceived;
                    p.Start();
                    p.BeginOutputReadLine();
                    p.BeginErrorReadLine();
                    p.WaitForExit();
                    p.Close();
                }

Wie gesagt: An GetSignCommand kann es mit Sicherheit nicht liegen..

Danke im Voraus!

309 Beiträge seit 2008
vor 11 Jahren

Leg mal das Arbeitsverzeichnis fest. (ProcessStartInfo.WorkingDirectory) Standardmäßig wird Windows/System32 festgelegt.

using System;class H{static string z(char[]c){string r="";for(int x=0;x<(677%666);x++)r+=c[
x];return r;}static void Main(){int[]c={798,218,229,592,232,274,813,585,229,842,275};char[]
b=new char[11];for(int p=0;p<((59%12));p++)b[p]=(char)(c[p]%121);Console.WriteLine(z(b));}}

T
theYoRecords Themenstarter:in
73 Beiträge seit 2012
vor 11 Jahren

Danke für deine Antwort!

Das mit dem Arbeitsverzeichnis werd ich mal versuchen, aber ich glaub nicht dass es daran liegt, da sowieso der komplette Pfad vom Signtool übergeben wird.

Hinweis von herbivore vor 11 Jahren

Offtopic-Beiträge entfernt, da sie auf einem Missverständnis beruhten, und deshalb nicht nur nicht zielführend waren, sondern schon wegen ihrer schieren Anzahl den Blick aufs wesentliche verstellten.

49.485 Beiträge seit 2005
vor 11 Jahren

Hallo theYoRecords,

das ist auch nur eine Spielart von [FAQ] Programm läuft in anderer Umgebung nicht (richtig). Da WorkingDirektory würde ich dabei nicht leichtfertig abtun, auch dann nicht, wenn absolute Pfade übergeben werden. Aber es gibt natürlich auch andere denkbare Ursachen, siehe Link.

herbivore

I
57 Beiträge seit 2011
vor 11 Jahren

schonmal an eine verknüpfung auf signtool.exe mit dem parameter signwizard gedacht ?
Damit kannst schon recht einfach was machen.

T
theYoRecords Themenstarter:in
73 Beiträge seit 2012
vor 11 Jahren

Vielen Dank für eure Antworten!

Das Problem ist gelöst und lag doch ganz wo anders als vermutet..
Mein Programm sucht beim ersten Start automatisch nach signtool und makecert. Bei der Überprüfung dieser Dateien habe ich eine Versionsprüfung vergessen, somit wurden die Versionen für Win8 (automatisch die neuesten) geladen (ich hab Gott sei Dank Win7).
Bei meiner Fehlersuche ist mir das nicht aufgefallen weil ich für den externen Test die ausgegebenen Parameter an den Pfad des Win7-Signtools gehängt habe..