Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi "WinSat.exe formal" mit Delphi (https://www.delphipraxis.net/197907-winsat-exe-formal-mit-delphi.html)

Mattze 17. Sep 2018 19:15

"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

Dalai 17. Sep 2018 19:44

AW: "WinSat.exe formal" mit Delphi
 
Zitat:

Zitat von Mattze (Beitrag 1413415)
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.

Selbstverständlich liegt es dort. Nur musst du halt schauen, von wo du guckst, wenn du dich auf einem Windows 64-bit bewegst. 32-Bit Programme haben keinen Zugriff auf das 64-bit System32-Verzeichnis. Stattdessen werden sie umgeleitet und bekommen den Inhalt von %SystemRoot%\SysWOW64 zu sehen. Die WinSAT.exe gibt es aber nur in %SystemRoot%\System32.

Zitat:

Es liegt in
"C:\Windows\WinSxS\amd64_microsoft-windows-w..ystemassessmenttool_31bf3856ad364e35_10.0.17134 .1_ none_6115843020845ee4\"
Es liegt auch dort, nur ist dieser Ort nur ein Hardlink, der für den normalen Betrieb überhaupt nicht von Bedeutung ist.

Zitat:

Also, was tun?
Die WinSAT.exe aus dem richtigen System32-Verzeichnis nehmen.

Grüße
Dalai

KodeZwerg 17. Sep 2018 19:56

AW: "WinSat.exe formal" mit Delphi
 
Soweit ich weiß wird WinSAT über Interfaces angesprochen und nicht als externer .exe Aufruf.

Hier gibts mehr Infos

Zu meiner Schande, ich habe es nicht getestet da ich keinen Windows Leistungsindex benötige.

devidespe 17. Sep 2018 20:17

AW: "WinSat.exe formal" mit Delphi
 
Zitat:

Zitat von KodeZwerg (Beitrag 1413421)
Soweit ich weiß wird WinSAT über Interfaces angesprochen und nicht als externer .exe Aufruf.

Nein das stimmt nicht.

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...

KodeZwerg 17. Sep 2018 20:35

AW: "WinSat.exe formal" mit Delphi
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von devidespe (Beitrag 1413424)
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'.

Klappt bei mir nicht, siehe -> Anhang 49977

Mattze 18. Sep 2018 07:30

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

Mattze 18. Sep 2018 07:51

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

Dalai 18. Sep 2018 14:01

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

KodeZwerg 18. Sep 2018 18:33

AW: "WinSat.exe formal" mit Delphi
 
Zitat:

Zitat von Dalai (Beitrag 1413485)
@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

So ganz verstehe ich es noch nicht obwohl ich Teile davon verstehe.
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.

Dalai 18. Sep 2018 18:48

AW: "WinSat.exe formal" mit Delphi
 
Zitat:

Zitat von KodeZwerg (Beitrag 1413515)
Wie starte ich eine 64bit CMD?

Start > Ausführen > "cmd.exe", ENTER. Oder via (Shift+)Rechtsklick im Explorer > Eingabeaufforderung hier öffnen. Es gibt darüber hinaus natürlich noch andere Wege. Startet man cmd.exe (mit oder ohne vollen Pfad) von einem 32-bit Programm aus, bekommt man immer die 32-bit CMD. Den Unterschied zwischen den beiden verschiedenen CMDs auf einem 64-bit Windows sollte man immer mit berücksichtigen, sonst kann man wunderschön auf die Schnauze fallen.

Zitat:

Wie kann ein Delphi 7 (32bit) Kompilat darauf zugreifen ich aber mit CMD nicht, da wären wir wieder bei Zeile 1 :)
Darauf wollte ich nicht hinaus. Ich dachte mir, dass es vielleicht einen Unterschied macht, ob man eine 64-bit EXE im Kontext einer 32-bit CMD ausführt, oder stattdessen die 64-bit EXE direkt ruft und diese ihr eigenes Konsolenfenster öffnet. Alles nur Vermutung, Spekulation.

Die Antwort auf die Frage selbst lautet: Entweder unter Benutzung des SysNative-Verzeichnisses oder unter temporärer Abschaltung der WOW64-Redirection (MSDN-Library durchsuchenWow64DisableWow64FsRedirection/MSDN-Library durchsuchenWow64RevertWow64FsRedirection).

Grüße
Dalai


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:45 Uhr.
Seite 1 von 2  1 2      

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