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/)
-   -   ProductName aus der Registry (https://www.delphipraxis.net/164720-productname-aus-der-registry.html)

Mattze 26. Nov 2011 17:43

ProductName aus der Registry
 
Hallo,

ich arbeite mit D7 pro unter Win 7 HP, 64. Bei der 32er Version ging es noch.

Die Registry wird mit
reg:=TRegistry.create(KEY_READ OR KEY_WOW64_64KEY);
angelegt.
Danach wird der Schlüssel
'Software\Microsoft\Windows NT\CurrentVersion'
unter HKLM zum Lesen geöffnet.
Wenn ich dort den 'ProductName' lese (readstring), wird mir immer
"Microsoft Windows XP" ausgegeben.
Drin steht es aber richtig, also "Windows 7 Home Premium" (regedit).
Warum das so ist und woher er den Wert nimmt, ist mir völlig unklar.

Könnt Ihr mir helfen? Warum ist das so und was muss ich ändern, damit es richtig wird?

Gruß
Mattze

jaenicke 26. Nov 2011 18:06

AW: ProductName aus der Registry
 
Dann hast du aus Versehen Delphi 7 im Kompatibilitätsmodus für XP eingestellt und damit gestartet. Das gilt dann auch für davon gestartete Prozesse...

Installiere Delphi 7 lieber richtig und entferne die Kompatibilitätseinstellungen, dann passiert sowas auch nicht.

Mattze 26. Nov 2011 19:20

AW: ProductName aus der Registry
 
Hallo,

vielen Dank! Genau das war's. Da wäre ich nie drauf gekommen!

Gruß
Mattze

jaenicke 26. Nov 2011 20:52

AW: ProductName aus der Registry
 
Nebenbei noch in Hinweis:
Wenn du eine 64-Bit Version von Windows hast und 32-Bit Programme erstellst, musst du in Regedit unter Software\Wow6432Node\... schauen, nicht direkt unter Software, da Zugriffe von 32-Bit Software standardmäßig dorthin umgeleitet werden. (Denn es liest sich bei dir so als hättest du auch in Regedit am selben Ort geschaut.)

RWarnecke 27. Nov 2011 07:53

AW: ProductName aus der Registry
 
Zitat:

Zitat von jaenicke (Beitrag 1138021)
Nebenbei noch in Hinweis:
Wenn du eine 64-Bit Version von Windows hast und 32-Bit Programme erstellst, musst du in Regedit unter Software\Wow6432Node\... schauen, nicht direkt unter Software, da Zugriffe von 32-Bit Software standardmäßig dorthin umgeleitet werden.

Wenn er den Quelltext wie oben in Beitrag 1 ausführt, schaut die Registry automatisch in Software\Wow6432Node nach, wenn es ein 32Bit Programm ist. Ich brauche dann nicht expliziet den Pfad Software\Wow6432Node angeben.

jaenicke 27. Nov 2011 09:52

AW: ProductName aus der Registry
 
Das habe ich doch geschrieben.
Zitat:

Zitat von jaenicke (Beitrag 1138021)
musst du in Regedit unter Software\Wow6432Node\... schauen

Ich habe mit keinem Wort geschrieben, dass das im Programm falsch ist. Nur wenn man in Regedit auch direkt unter Software schaut, wie es im Programm im Quelltext steht, findet man eben gar nicht die Einträge, die das Programm real liest. Und deshalb habe ich geschrieben dass man in Regedit unterhalb von Software\Wow6432Node statt direkt unter Software schauen muss...


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:08 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