Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   32/64 Bit Problem (https://www.delphipraxis.net/186832-32-64-bit-problem.html)

calibra301 5. Okt 2015 06:44

Delphi-Version: 5

32/64 Bit Problem
 
Hallo,

habe eine alte Anwendung von Delphi 6 nach XE8 portiert.

Diese benutzt eine externe C++ DLL welche unter anderem einen Wert in die Registry
schreibt. Diese DLL liegt auch als 32/64 Bit Version vor und wurde entsprechend angepasst.

Die 32 Bit Variante macht was sie soll, das schreiben des Wertes in die REgistry per Externer DLL (die natürlich noch
vieles mehr mach ) funktioniert.

In der 64 Bit Version klappt auch alles so lange ich die exe in der Entwicklungsumgebung starte (sowie Debug als auch Release funktionieren da )

Ausserhalb der Entwicklungsumgebung geht's nur wenn ich die exe als Admin starte.

Hab als Laufzeit - Themes "Keine" und "Laufzeitthemes aktivieren" probiert.
Das mit dem externem Manifest hab ich leider nicht ganz verstanden und alle ge-googelten Vorlagen funktionierten nicht.

Wo könnte der Haken liegen ? Die DLL schliesse ich aus da es ja als Admin und in der Entwicklungsumgebung funktioniert.
Die Exe mit Adminrechten zu starten geht zwar aber das Popup a la "Sind sie sicher.." nervt schon.

Danke und Gruss
Calli

mkinzler 5. Okt 2015 06:55

AW: 32/64 Bit Problem
 
Die IDE läuft auch mit Adminrechten. In welchen Registry-Zweig schreibt den die Dll?

calibra301 5. Okt 2015 07:04

AW: 32/64 Bit Problem
 
Hallo,

vorab: Hab hier den Manifest Creator gefunden, ein Manifest erzeugt und das Programm damit kompiliert.
Es kommt die "Admin" Warnung aber es geht.
Schön wäre es wenn man die abstellen könnte.

Zu deiner Frage:

Delphi-Quellcode:
LPDWORD lpdwDisp = &dwDisp;
   string key = "SOFTWARE\\MeineSoftware\\"+ getName() + "\\" + getID();

    LONG iSuccess = RegCreateKeyEx(HKEY_LOCAL_MACHINE, (const char *) key.c_str() , 0L,NULL, REG_OPTION_NON_VOLATILE, KEY_WOW64_64KEY | KEY_ALL_ACCESS, NULL, &hKey,lpdwDisp);

Gruss
Calli

mkinzler 5. Okt 2015 07:14

AW: 32/64 Bit Problem
 
Um in HKLM zu schreiben werden Adminrechte benötigt. Als Nicht-Admin darf man nur in HKCU schreiben.

HolgerX 5. Okt 2015 07:15

AW: 32/64 Bit Problem
 
und genau hier 'HKEY_LOCAL_MACHINE' liegt das Problem!

Meines Wissens nach, kann nur ein Admin unter 'HKEY_LOCAL_MACHINE' schreiben.
Rein 'Lesen' kann hier jeder.

Welche Eintrage müssen denn dort gemacht werden?

Wenn es User-Bezogene sind, sollten diese eher in 'HKEY_CURRENT_USER' abgelegt werden.

Wenn Du Daten/Konfigurationen für alle Benutzer ablegen möchtest, kannst Du auch eine eigene Konfigurationsdatei unter '%appdata%' ablegen.

Ansonsten sollen alle Eintrage unter 'HKEY_LOCAL_MACHINE' direkt einmalig bei der Installation/Erstem Start angelegt werden und dann nur noch mit geringeren Rechten lesend darauf zugegriffen werden. ;)

calibra301 5. Okt 2015 07:23

AW: 32/64 Bit Problem
 
Hi,

danke für den Hinweis...ist echt peinlich...

Hab in der DLL den Registry Eintrag auf Current User umgebogen und nun geht's.

Dickes Danke !!
Hoffe ich kann mich mal revanchieren.

Gruss
Calli


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