Delphi-PRAXiS
Seite 4 von 4   « Erste     234   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi %programfiles% unter Windows 7 x64 (https://www.delphipraxis.net/141755-programfiles-unter-windows-7-x64.html)

himitsu 15. Okt 2009 23:43

Re: %programfiles% unter Windows 7 x64
 
Welche Delphi-Version nutzt du eigentlich?

bei den Neueren kann man in den Projektoptionen die PE-Flags setzen

Sereby 15. Okt 2009 23:44

Re: %programfiles% unter Windows 7 x64
 
- Delphi 2009 Update 3
bds.exe starte ich immer mit Admin rechten damit ich überhaupt debuggen kann und somit wird das kompilierte programm ebenfalls mit admin-rechten gesatrtet. auch ein manuelles ausführen der kompilierten .exe mit admin rechten liefert das selbe ergebnis


edit: was muss ich da denn nun genau setzen? zwischen C und Delphi sind ja doch nen paar unterschiede

Luckie 15. Okt 2009 23:50

Re: %programfiles% unter Windows 7 x64
 
Zum Debuggen braucht man keine Adminrechte.

Sereby 15. Okt 2009 23:50

Re: %programfiles% unter Windows 7 x64
 
dann hast du wohl noch nie unter NT6 x64 versucht zu debuggen

edit:
wenn ich bei den projekt-optionen "Zusätzliche PE-Header Flags setzen" auf 0501 bzw 501 setze funzt es trotzdem nicht

gore 3. Nov 2010 11:19

AW: %programfiles% unter Windows 7 x64
 
Auch wenn die Frage schon älter ist, werden sicherlich einige noch noch der Lösung suchen (und auf diesen Thread stoßen). Deshalb hier eine einfache Lösung:

Delphi-Quellcode:

RegReadString64(HKEY_LOCAL_MACHINE, 'SOFTWARE\Microsoft\Windows\CurrentVersion','ProgramFilesDir','');


function RegReadString64(MainKey:HKey; SubKey,ValueName,sDefault:string):string;
const KEY_WOW64_64KEY = $0100;
var DType: Integer;
    BSize: Integer;
    Key:HKey;
    a2,a:array[0..MAX_PATH]of char;
    p:PChar;
begin
  result:=sDefault;
  DType := REG_SZ;
  BSize:=sizeof(a);
  p:=a;
  if RegOpenKeyEx(MainKey, PChar(SubKey), 0, KEY_READ or KEY_WOW64_64KEY , Key)<>ERROR_SUCCESS then exit;
  if RegQueryValueEx(key,PChar(ValueName),nil,@DType, PByte(p), @BSize) <> ERROR_SUCCESS then begin RegCloseKey(Key); exit; end;
  RegCloseKey(Key);
  a[BSize]:=#0; //sonst Fehler beim lesen von ''
  if DType=REG_EXPAND_SZ then if ExpandEnvironmentStrings(a,a2,sizeof(a2))>0 then StrCopy(a,a2);
  result:=StrPas(a);
end;
Tschuldigung für den furchtbaren Code, aber hauptsache es klappt erstmal unter Delphi.

Anmerkung: Der Code klappt erst ab Win7, siehe http://msdn.microsoft.com/en-us/libr...(v=VS.85).aspx :
Either KEY_WOW64_32KEY or KEY_WOW64_64KEY can be specified. If both flags are specified, the function fails with ERROR_INVALID_PARAMETER.
Windows Server 2008, Windows Vista, Windows Server 2003, and Windows XP: If both flags are specified, the function’s behavior is undefined.


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:39 Uhr.
Seite 4 von 4   « Erste     234   

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