| Autor | Beitrag | 
| Bergmann89 
          Beiträge: 1742
 Erhaltene Danke: 72
 
 Win7 x64, Ubuntu 11.10
 Delphi 7 Personal, Lazarus/FPC 2.2.4, C, C++, C# (Visual Studio 2010), PHP, Java (Netbeans, Eclipse)
 
 | 
Verfasst: Mi 28.09.11 20:56 
 
Hey,
 ich versuch grad verzweifelt einen bestimmten Schlüssel aus der Regestry zu laden, aber es geht nicht so wie ich mir das vorstelle. Der Schlüssel ist 'HKEY_LOCAL_MACHINE\SOFTWARE\MayComputer\eDocPrintPro\' und der wird mir bei regedit auch richtig angezeigt. Wenn ich das ganze jetzt im Programm auslesen will, dann kann er den Schlüssel nicht finden. Hier ma der Code dazu:
 		                       Delphi-Quelltext 
 									| 1:2:
 3:
 4:
 5:
 6:
 7:
 8:
 9:
 10:
 11:
 12:
 13:
 14:
 15:
 16:
 17:
 18:
 19:
 20:
 21:
 22:
 
 | function ReadPrintProDir: String;var
 reg: TRegistry;
 begin
 result := '';
 reg := TRegistry.Create(KEY_ALL_ACCESS);
 try
 reg.RootKey := HKEY_LOCAL_MACHINE;
 if reg.OpenKey('SOFTWARE\MayComputer\eDocPrintPro\', False) then begin
 try
 if reg.ValueExists('eDocPrintPro') then
 result := reg.ReadString('eDocPrintPro');
 finally
 reg.CloseKey;
 end;
 end;
 finally
 reg.Free;
 end;
 if (Length(result) > 0) and (result[Length(result)] <> '\') then
 result := result + '\';
 end;
 |  OS ist Win7x64. Hat da jmd ne Idee oder wenigstens einen kleinen Tipp für mich? 
 MfG & Thx Bergmann._________________ Ich weiß nicht viel, lern aber dafür umso schneller^^
 | 
|  | 
| Luckie Ehemaliges Mitglied
 Erhaltene Danke: 1
 
 
 
 
 | 
Verfasst: Mi 28.09.11 21:48 
 
Das hätte unter Windows XP auch schon nicht geklappt, wenn du nicht standardmäßig als Administrator an deinem Rechner gearbeitet hättest. Bei mir hätte das nämlich nicht funktioniert. Den Hive HKLM kann man als normaler Benutzer nur lesen. Du öffnest ihn aber mit allen Rechten, also auch zum Schreiben. Und dann brauchst du Administratorenrechte. Und hättest du eine gescheite Fehlerbehandlung eingebaut, hättest du auch eine Fehlermeldung bekommen, warum es nicht funktioniert. | 
|  | 
| Bergmann89  
          Beiträge: 1742
 Erhaltene Danke: 72
 
 Win7 x64, Ubuntu 11.10
 Delphi 7 Personal, Lazarus/FPC 2.2.4, C, C++, C# (Visual Studio 2010), PHP, Java (Netbeans, Eclipse)
 
 | 
Verfasst: Mi 28.09.11 22:10 
 
Hey,
 das Programm läuft mit Admin-Rechten (is eine Art Installation, also brauch es die Rechte sowieso). Und GetLastError ist 0. Also kein Fehler vorhanden. War es nicht so, das Win7 für 32-Bit Anwendungen eine Art VM hat? Die hat ja dann auch teilweise ne andere Registry, oder bin ich da grad auf dem Holzweg?
 
 MfG Bergmann.
 _________________ Ich weiß nicht viel, lern aber dafür umso schneller^^
 | 
|  | 
| Luckie Ehemaliges Mitglied
 Erhaltene Danke: 1
 
 
 
 
 | 
Verfasst: Mi 28.09.11 22:14 
 
Hmpf, warum gibst du die entscheidenden Informationen erst jetzt? Es ist also Windows 7 64-Bit. Und wie viel Bit hat dein Programm? Wenn es nur ein 32-Bit Programm ist, wird es in den 32-Bit Zweig der Registry umgeleitet. Das kann man aber mit einem zusätzliche Flag beim Öffnen der Registry verhindern. Musst du mal googlen. aber ich würde den Hive trotzdem nur lesend öffnen, wenn ich nur lesen will. | 
|  | 
| Narses 
          
  Beiträge: 10183
 Erhaltene Danke: 1256
 
 W10ent
 TP3 .. D7pro .. D10.2CE
 
 | 
Verfasst: Mi 28.09.11 22:18 
 
_________________ There are 10 types of people - those who understand binary and those who don´t.
 | 
|  | 
| Luckie Ehemaliges Mitglied
 Erhaltene Danke: 1
 
 
 
 
 | 
Verfasst: Mi 28.09.11 22:21 
 
Wer liest schon das Kleingedruckte? Und es ist nicht gesagt, dass das Programm auch auf dem Rechner laufen soll mit dem Windows 7. | 
|  | 
| Bergmann89  
          Beiträge: 1742
 Erhaltene Danke: 72
 
 Win7 x64, Ubuntu 11.10
 Delphi 7 Personal, Lazarus/FPC 2.2.4, C, C++, C# (Visual Studio 2010), PHP, Java (Netbeans, Eclipse)
 
 | 
Verfasst: Mi 28.09.11 22:30 
 
Ahhh jetzt kommt Licht ins dunkel   Hier  die Beschreibung. Danke für die schnelle Hilfe._________________ Ich weiß nicht viel, lern aber dafür umso schneller^^
 | 
|  | 
| Luckie Ehemaliges Mitglied
 Erhaltene Danke: 1
 
 
 
 
 | 
Verfasst: Mi 28.09.11 23:33 
 
Das gibt aber wieder ein Gefrickel bei 32-Bit/64-Bit. Das Programm muss dann feststellen ob es unter 32-BNit oder 64-Bit läuft und Windows 2000 kompatible ist es dann auch nicht mehr. | 
|  | 
| Bergmann89  
          Beiträge: 1742
 Erhaltene Danke: 72
 
 Win7 x64, Ubuntu 11.10
 Delphi 7 Personal, Lazarus/FPC 2.2.4, C, C++, C# (Visual Studio 2010), PHP, Java (Netbeans, Eclipse)
 
 | 
Verfasst: Mi 28.09.11 23:42 
 
Hey,
 das mit dem Win2000 weiß ich, aber das brauch ich nich wirklich. Und für das andere Problem:
 		                       Delphi-Quelltext 
 									| 1:2:
 3:
 4:
 5:
 6:
 7:
 8:
 9:
 10:
 11:
 12:
 13:
 14:
 15:
 16:
 17:
 18:
 19:
 20:
 21:
 22:
 23:
 24:
 25:
 26:
 
 | function IsWOW64: Boolean;type
 TIsWow64Process = function(     Handle: THandle;
 var Res: BOOL
 ): BOOL; stdcall;
 var
 IsWow64Result: BOOL;                IsWow64Process: TIsWow64Process;  begin
 IsWow64Process := GetProcAddress(
 GetModuleHandle('kernel32'), 'IsWow64Process'
 );
 if Assigned(IsWow64Process) then
 begin
 if not IsWow64Process(GetCurrentProcess, IsWow64Result) then
 raise Exception.Create('Bad process handle');
 Result := IsWow64Result;
 end
 else
 Result := False;
 end;
 |  Es arbeitet unter Win7 zumindest erstmal so, wie es soll._________________ Ich weiß nicht viel, lern aber dafür umso schneller^^
 | 
|  | 
| Luckie Ehemaliges Mitglied
 Erhaltene Danke: 1
 
 
 
 
 | 
Verfasst: Mi 28.09.11 23:48 
 
Wenn IsWOW64 wahr ist, dann ist es ein 32-Bit Prozess auf einen 64-Bit Windows? Ich hätte die Funktion Is32On64 genannt. Dieses WindowsOnWindows verursacht bei mir immer ein Knoten im Hirn.   | 
|  | 
| Aya 
          Beiträge: 1964
 Erhaltene Danke: 15
 
 MacOSX 10.6.7
 Xcode / C++
 
 | 
Verfasst: Do 29.09.11 07:29 
 
Ich vermute wenn isWOW64 wahr ist, ist es ein 64bit Windows... ob dein Programm in dem du die funktion aufrufst 32bit oder 64bit ist wirst du ja vermutlich selbst wissen    Insofern ist der name schon ganz okay gewaehlt    Aya~_________________Aya I aim for my endless dreams and I know they will come true!
 | 
|  | 
| Luckie Ehemaliges Mitglied
 Erhaltene Danke: 1
 
 
 
 
 | 
Verfasst: Do 29.09.11 09:36 
 
Nicht unbedingt. Ich kann es mit Delphi einmal als 32-Bit compilieren und einmal als 64-Bit ohne was am Code ändern zu müssen. Also weiß ich nicht mit wie viel Bit mein Programm läuft. | 
|  | 
| Kha 
          Beiträge: 3803
 Erhaltene Danke: 176
 
 Arch Linux
 Python, C, C++ (vim)
 
 | 
Verfasst: Do 29.09.11 10:30 
 
	  |  Aya hat folgendes geschrieben  : |  	  | Ich vermute wenn isWOW64 wahr ist, ist es ein 64bit Windows... | 
 Wofür soll dann "WO" stehen    ? Dass Windows on Windows64 das 32-Bit-Subsystem der x64-Versionen ist, sollte doch langsam bekannt sein._________________ >λ=
 | 
|  | 
| Luckie Ehemaliges Mitglied
 Erhaltene Danke: 1
 
 
 
 
 | 
Verfasst: Do 29.09.11 10:44 
 
ist ja auch bekannt. Nur ich muss immer zwei mal nachdenken, was gemeint ist. Keine Ahnung, was mich da jedes mal verwirrt. | 
|  |