Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Fehlerauswertung rundll32.exe + Parameter (https://www.delphipraxis.net/187131-fehlerauswertung-rundll32-exe-parameter.html)

haentschman 30. Okt 2015 09:44


Fehlerauswertung rundll32.exe + Parameter
 
Hallo alle...

SOLL:
Treiberinstallation über die SETUPAPI.DLL mit der rundll32.exe.

IST:
Da der Treiber nicht signiert ist schlägt die Installation unter W10 fehl. Meldung: "Installation fehlgeschlagen" als Message Dialog. Das soll auch so sein. Nur leider bekomme ich in meinem Tool den Fehler nicht mit. :cry: ExitCode vom CreateProcess ist in jedem Falle 0.

WUNSCH:
Einen Rückgabewert um Erfolgreich und Fehler trennen zu können.

Ich bitte um Ideen... 8-)

Code: die if begin/end/else stammen aus Versuchszwecken um herauszufinden wann was passiert. :zwinker:
Delphi-Quellcode:
if CreateProcess(NIL,
                 PChar(FPreferences.SystemPath + conRunDLLName + ' ' + Parameters),
                 NIL,
                 NIL,
                 False,
                 CREATE_NEW_PROCESS_GROUP or NORMAL_PRIORITY_CLASS,
                 NIL,
                 PChar(ExtractFilePath(FPreferences.SystemPath)),
                 SUInfo,
                 ProcInfo) then
begin
  try
    WaitForSingleObject(ProcInfo.hProcess, INFINITE);
    GetExitCodeProcess(ProcInfo.hProcess, DWord(ExCode));
    // hier die Prüfung auf ExCode
    Result := True;
  finally
    CloseHandle(ProcInfo.hProcess);
    CloseHandle(ProcInfo.hThread);
  end;
  if Assigned(FOnInstallSuccess) then
  begin
    FOnInstallSuccess(Self);
  end;
end
else
begin
  if Assigned(FOnInstallError) then
  begin
    FOnInstallError(Self, 'Blubb');
  end;
end;

haentschman 2. Nov 2015 10:17

AW: Fehlerauswertung rundll32.exe + Parameter
 
Moin...8-)

Problem noch nicht gelöst.. schieb.:P

uligerhardt 2. Nov 2015 10:25

AW: Fehlerauswertung rundll32.exe + Parameter
 
Ich hab mal nach SetupAPI gegoogelt und dabei das gefunden. Das enthält Funktionen mit Rückgabewert, die sich ohne RunDll aufrufen lassen. Sehe ich das was falsch?

haentschman 2. Nov 2015 10:46

AW: Fehlerauswertung rundll32.exe + Parameter
 
Danke für die Antwort. :thumb:

Ich habe den Code nur übernommen mit der rundll32.exe und der SetupAPI.dll als Parameter. Du hast mich aber auf eine Idee gebracht. Könnte ich die SetupAPI DLL selbst laden und die DiInstallDriver function selbst aufrufen?

Der Parameter der aktuellen runDLL32.exe:
Code:
SETUPAPI.DLL,InstallHinfSection DefaultInstall 132 D:\blubb\bla.inf'

uligerhardt 2. Nov 2015 10:59

AW: Fehlerauswertung rundll32.exe + Parameter
 
Zitat:

Zitat von haentschman (Beitrag 1320327)
Danke für die Antwort. :thumb:

Ich habe den Code nur übernommen mit der rundll32.exe und der SetupAPI.dll als Parameter. Du hast mich aber auf eine Idee gebracht. Könnte ich die SetupAPI DLL selbst laden und die DiInstallDriver function selbst aufrufen?

Der Parameter der aktuellen runDLL32.exe:
Code:
SETUPAPI.DLL,InstallHinfSection DefaultInstall 132 D:\blubb\bla.inf'

In der MSDN ist die Routine unter "Public Device Installation Functions" einsortiert. Das heißt für mich: Probier's mal aus. :mrgreen:

haentschman 2. Nov 2015 11:26

AW: Fehlerauswertung rundll32.exe + Parameter
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hmmm... :gruebel: Die setupAPI.dll hat die function aber nicht unter Exports...

PS: auch unter "D" nicht.

Dalai 2. Nov 2015 12:00

AW: Fehlerauswertung rundll32.exe + Parameter
 
Falls du diese DiInstallDriver Funktion meinst, dann sollte Newdev.dll weiterhelfen. Die Funktion gibt's aber erst ab Vista (die DLL offenbar schon seit Win2k).

MfG Dalai

haentschman 2. Nov 2015 17:14

AW: Fehlerauswertung rundll32.exe + Parameter
 
Hallo Dalei,

auch diese DLL hat nicht DiInstallDriver... :P Dafür aber DiInstallDriverA und W. Zumindest bekomme ich einen Pointer auf die Funktion. Weiter bin ich noch nicht gekommen. Melde mich dann morgen wieder. :thumb:

PS: Wo findet man solche Info´s im MSDN? Wo kann ma die Details nachlesen?
[Edit] :oops: Man sollte auch mal bis nach unten blättern.
[Edit2] Ha... unter DiInstallDevice ist die DLL unter Requirements gelistet, unter DiInstallDriver nicht. Supi...

Danke...

haentschman 3. Nov 2015 16:55

AW: Fehlerauswertung rundll32.exe + Parameter
 
Sooo ihr lieben Liebenden... :stupid:

Danke an alle. Es funktioniert. :cheer:

Prinzipiell hätte es sogar auf Anhieb funktioniert wenn mir mein lieber Kollege nicht die verkehrte INF untergejubelt hätte... und ich probiere mir einen Wolf.:wall:


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:38 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz