![]() |
"WinSat.exe formal" mit Delphi
Hallo,
wie kann man mit Delphi 7 "WinSat.exe formal" (zur Erstellung des Leistungsindexes) starten. Bitte nicht lächeln! Weder Shellexecute(ex) noch createprocess macht es richtig! Jedenfalls bei mir nicht (Win 10). Wenn man "Winsat formal" in der Console startet, öffnet es ein neues Fenster mit dem Titel: "C:\windo2ws\system32\winsat.exe". Nur, in diesem Ordner gibt es das Programm garnicht. Es liegt in "C:\Windows\WinSxS\amd64_microsoft-windows-w..ystemassessmenttool_31bf3856ad364e35_10.0.17134 .1_ none_6115843020845ee4\" Wenn ich es allerdings aus diesem Ordner starte, wird keine Datei angelegt - jedenfalls finde ich keine. Ich kann also nix auswerten. Außerdem wird sie dann nicht auf Deutsch gestartet! Also, was tun? Gruß Mattze |
AW: "WinSat.exe formal" mit Delphi
Zitat:
Zitat:
Zitat:
Grüße Dalai |
AW: "WinSat.exe formal" mit Delphi
Soweit ich weiß wird WinSAT über Interfaces angesprochen und nicht als externer .exe Aufruf.
![]() Zu meiner Schande, ich habe es nicht getestet da ich keinen Windows Leistungsindex benötige. |
AW: "WinSat.exe formal" mit Delphi
Zitat:
Ich kann es hier ganz normal aufrufen, wenn der Pfad stimmt. Unter 32 Bit Windows in '\system32\WinSAT.exe' und unter 64 Bit Windows unter '\Sysnative\WinSAT.exe'. Den Aufruf selbst habe ich mit ShellExecuteAndWait gemacht, weil die Eingabeaufforderung dann solange offen bleibt, bis die Leistungsbewertung abgeschlossen ist und danach mit deiner Programmausführung die Ergebnisse abgerufen werden können. Alles in ein Memo umleiten wäre dann noch die elegantere Variante... |
AW: "WinSat.exe formal" mit Delphi
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
|
AW: "WinSat.exe formal" mit Delphi
Hallo
und komisch "isses". Den Ordner sysnative habe ich gar nicht. Mitdem Explorer gesucht, wird sie tatsächlich in System32 gefunden!!! Wäre ja sonst auch komisch! Fragt sich, wie ich die mit einem 32-Bit-Programm dort finden und ausführen kann? (Das läuft sicher darauf hinaus, wie ich diese 32-Bit-Umleitung (temporär) verhindern kann.) Delphi 7 ist nun mal "bloß" 32-Bit. Habt Ihr einen Tipp? Gruß Mattze |
AW: "WinSat.exe formal" mit Delphi
Hallo,
vergesst den vorigen Post. Ich hatte nur nicht mitbekommen, dass sysnative ein Alias von system32 für 32-Bit-Programme ist. Jetzt läuft alles wunderbar. (Ich bin trotzdem etwas frustriert! Jetzt computere ich schon sooo lange, aber von sysnative habe ich noch nix gewusst! Und da gibt es bestimmt noch vieles...) Gruß Mattze |
AW: "WinSat.exe formal" mit Delphi
@KodeZwerg: Vielleicht mag es WinSAT.exe nicht, wenn man sie aus einer 32-bit CMD ruft? Schließlich wird die ihre WinSATAPI.dll von dort laden wollen, aber 64-bit Programme haben keinen Zugriff auf SysNative (wozu auch).
Grüße Dalai |
AW: "WinSat.exe formal" mit Delphi
Zitat:
Also ich kann nachvollziehen das ne 32bit CMD da eventuell was falsch macht. Wie starte ich eine 64bit CMD? Wie kann ein Delphi 7 (32bit) Kompilat darauf zugreifen ich aber mit CMD nicht, da wären wir wieder bei Zeile 1 :) Aber Danke, passt schon, ich will es eh nicht benutzen, aber hatte mich interessiert was da übers starten aus verschiedenen Verzeichnissen bei rauskommt. Meine Ergebnisse kann man da ja sehen. |
AW: "WinSat.exe formal" mit Delphi
Zitat:
Zitat:
Die Antwort auf die Frage selbst lautet: Entweder unter Benutzung des SysNative-Verzeichnisses oder unter temporärer Abschaltung der WOW64-Redirection ( ![]() ![]() Grüße Dalai |
AW: "WinSat.exe formal" mit Delphi
Ergänzend zu Dalai als Hintergrund zur 32-/64-Bit Thematik (WOW64-Redirection):
![]() ![]() Winsat.exe hat so einige Parameter: ![]() |
AW: "WinSat.exe formal" mit Delphi
Danke Euch beiden dafür, da werden ich mal lesen und schauen wie ich den Konflikt bzw Knoten den ich gerade im Kopf habe löse :)
Offtopic Hier noch eine WMI Batch Datei für Interessierte, die einem WinSAT Ergebnisse liefert, habs getestet und zeigt alles 0 an da ich das WinSAT Tool selbst noch nie Indexsen lies.
Delphi-Quellcode:
@ECHO OFF
IF NOT "%OS%"=="Windows_NT" GOTO Syntax IF NOT "%~3"=="" GOTO Syntax ECHO.%* | FIND "?" >NUL && GOTO Syntax SETLOCAL ENABLEDELAYEDEXPANSION SET Valid=0 FOR %%A IN ("" CPU D3D Disk Graphics Mem Memory Level Total Vid Video) DO ( IF /I "%~1"=="%%~A" SET Valid=1 ) IF NOT "%Valid%"=="1" ( ENDLOCAL GOTO Syntax ) IF "%~2"=="" ( SET Node=%ComputerName% ) ELSE ( SET Node=%~2 ) SET RC= SET WinSATAssessmentState.0=StateUnknown SET WinSATAssessmentState.1=Valid SET WinSATAssessmentState.2=IncoherentWithHardware SET WinSATAssessmentState.3=NoAssessmentAvailable SET WinSATAssessmentState.4=Invalid FOR /F "tokens=1* delims==" %%A IN ('WMIC /Node:"%Node%" Path Win32_WinSAT Where TimeTaken^="MostRecentAssessment" Get WinSATAssessmentState /Format:LIST') DO ( IF NOT "%%~B"=="" ( FOR %%C IN (%%~B) DO ( SET Win32_WinSAT.WinSATAssessmentState=!WinSATAssessmentState.%%C! ) ) ) FOR /F "tokens=1* delims==" %%A IN ('WMIC /Node:"%Node%" Path Win32_WinSAT Where TimeTaken^="MostRecentAssessment" Get WinSPRLevel /Format:LIST') DO ( IF NOT "%%~B"=="" ( SET Result=%%~B FOR %%C IN ("!Result:,=.!") DO ( SET Win32_WinSAT.WinSPRLevel=%%~C ) ) ) FOR /F "tokens=1* delims==" %%A IN ('WMIC /Node:"%Node%" Path Win32_WinSAT Where TimeTaken^="MostRecentAssessment" Get * /Format:LIST ^| FINDSTR /R /B /I /C:"%~1[^=]*Score="') DO ( IF NOT "%%~B"=="" ( FOR %%C IN (%%~B) DO IF "!RC!"=="" SET /A RC = %%~C SET Result=%%~B FOR %%C IN ("!Result:,=.!") DO ( SET Win32_WinSAT.%%A=%%~C ) ) ) IF "%~1"=="" SET RC=%Win32_WinSAT.WinSPRLevel% SET Win32_WinSAT. ENDLOCAL & EXIT /B %RC% :Syntax ECHO. ECHO WinSAT.bat, Version 1.00 ECHO Return Windows System Assessment Tools's scores for the specified computer ECHO. ECHO Usage: WINSAT [ component [ computer ] ] ECHO. ECHO Where: "component" can have one of the following values: ECHO "CPU" to return the WinSAT CPU Score ECHO "D3D" to return the WinSAT CPU Score ECHO "Disk" to return the WinSAT Disk Score ECHO "Graphics", "Vid" or "Video" to return the WinSAT Graphics Score ECHO "Mem" or "Memory" to return the WinSAT Disk Score ECHO "Level" or "Total" to return the WinSAT Total Score (WinSPRLevel) ECHO "computer" is an optional remote computer (default: local computer) ECHO. ECHO Notes: If a component is specified, only the score for that component will ECHO be displayed on screen. ECHO The integer value for the specified score will be returned as ECHO "errorlevel". ECHO If no component is specified, ALL scores will be displayed on screen, ECHO and the "errorlevel" will be the integer value of the total score. ECHO. ECHO Written by Rob van der Woude ECHO http://www.robvanderwoude.com IF "%OS%"=="Windows_NT" EXIT /B 1 |
AW: "WinSat.exe formal" mit Delphi
Hmm bzgl. der Ergebnisse habe ich die XML-Dateien ausgewertet - diese liegen an fest definierter Stelle und haben ein bestimmtes Format. Damit hast du auch Zugriff auf frühere Bewertungen.
Mag aber auch damit zusammenhängen, dass ich WMI nicht gerne verwende. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:42 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz