Frage

Ich versuche, herauszufinden, warum ein NPAPI Plugin habe ich geschrieben, was in Ordnung in Bezug auf die Operationen ausgelöst über Javascipt Anrufe durchführen arbeitet, kann nicht Createprocess () oder ShellExecute () eine Anwendung von einem Pfad über die Javascript angegeben starten Anruf.

Ich kann scheinbar eine dieser Methoden verwenden, und sie kehren Erfolg, das heißt ohne Fehlercode. Aber die Anwendung nicht startet einfach nicht. Ich habe versucht, die Parameter verwendet, zu modifizieren, wenn sie anrufen, neue Prozessgruppe usw. zu schaffen, aber scheinbar ohne Wirkung.

Ich weiß, das ein wenig wie ein Sicherheitsrisiko zu sein scheint, aber für den ganz bestimmten Zweck wollen wir, um es für sie kein Problem sein sollten.

Mit Windows XP Pro SP3, Firefox 3.5 und dem folgenden Code ein:

ZeroMemory( &si, sizeof(si) ); 
si.cb = sizeof(si);
ZeroMemory( &pi, sizeof(pi) ); 
if( CreateProcess( NULL, wFileName, NULL, NULL, FALSE, 
                  CREATE_NEW_CONSOLE | CREATE_NEW_PROCESS_GROUP, 
                  NULL, NULL, &si, &pi ) )
{ 
    bSuccess = true; // Close process and thread handles.      
    WaitForSingleObject(pi.hProcess,INFINITE); 
    CloseHandle( pi.hProcess ); 
    CloseHandle( pi.hThread ); 
}
War es hilfreich?

Lösung

Ohne Code (Snippet) auf ihn zu kauen ist wirklich schwer wertvolle Hinweise zu geben:

Ich sehe nicht, warum dies nicht auf XP funktionieren soll. Sind Sie sicher, dass die Createprocess () / ShellExecute () Anrufe erfolgreich sein?

Reise versuchen:

  • Ist die ShellExecute () -Aufruf auch erfolgreich sein, wenn Sie einen ungültigen Pfad passieren?

  • Was passiert, wenn Sie einen hartcodierten Pfad verwenden (zum Beispiel den Pfad zu notepad.exe, einen Pfad ohne Leerzeichen, etc.)?

  • Überprüfen Sie mit Process (ehemals filemon), wenn die ausführbare Datei der Anwendung, die Sie Start versuchen, ist acceessed.

Vielleicht ist die ausführbare Datei startet nicht, weil eine Abhängigkeit DLL nicht gefunden wird.
Beachten Sie, dass die Arbeits / aktuelles Verzeichnis das Verzeichnis des Browsers ausgeführt werden kann, wenn aus einem Plugin das Programm gestartet ist.
Daher DLLs, die im Anwendungsordner befinden sich nicht gefunden werden könnte.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top