Delphi-PRAXiS
Seite 3 von 4     123 4      

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)

Luckie 15. Okt 2009 23:22

Re: %programfiles% unter Windows 7 x64
 
Du testest ja auf nil. Mach es mal so, wie ich es geschrieben habe.

Sereby 15. Okt 2009 23:24

Re: %programfiles% unter Windows 7 x64
 
die prüfung auf nil ist dafür gedacht dass das programm auch auf 32bit systemen laufen soll und die diese funktion nicht haben!
und er geht ja in die funktion rein das is ja nicht das problem

Luckie 15. Okt 2009 23:26

Re: %programfiles% unter Windows 7 x64
 
Sorry, das ist ja nur der test, ob die Funktion geladen wurde. Aber hier hast du keine fehlerüberprüfung:
Delphi-Quellcode:
Wow64DisableWow64FsRedirection(Wow64FsEnableRedirection);
Das will ich doch die ganze zeit wissen. Da sollst du meinen Code reinschreiben.

Bzw. hier:
Delphi-Quellcode:
Wow64EnableWow64FsRedirection(Wow64FsEnableRedirection);

Sereby 15. Okt 2009 23:29

Re: %programfiles% unter Windows 7 x64
 
am ende der funktion wird GetLastError aufgerufen und als rückgabewert gesetzt.
diesen speichere ich und ist wie bereits mehrfach erwähnt 0!

wenn ich daraus das mache wie du beschrieben hast macht er absolut nichts weil "if not Wow64DisableWow64FsRedirection(Wow64FsEnableRedire ction) then ..." nicht zutrifft weil 0 bei LongBool nunmal True ist

himitsu 15. Okt 2009 23:34

Re: %programfiles% unter Windows 7 x64
 
GetLastError liefert "nur" den letzen Fehler ... bei OK muß dessen Wert also nicht stimmen.
Delphi-Quellcode:
function ChangeFSRedirection(const DisableIT: Boolean): Cardinal;
begin
  if (@Wow64EnableWow64FsRedirection <> nil) and (@Wow64DisableWow64FsRedirection <> nil) then
  begin
    if DisableIT then
    begin
      if Wow64DisableWow64FsRedirection(Wow64FsEnableRedirection) then
        Result := S_OK
      else
        Result := GetLastError;
    end
    else
    begin
      if Wow64EnableWow64FsRedirection(Wow64FsEnableRedirection) then
        Result := S_OK
      else
        Result := GetLastError;
    end;
  end else
    Result := {hier einen Fehlercode für "nicht aktiv" einsetzen};
end;
und in kurz
Delphi-Quellcode:
function ChangeFSRedirection(const DisableIT: Boolean): Cardinal;
begin
  if Assigned(Wow64EnableWow64FsRedirection) and Assigned(Wow64DisableWow64FsRedirection) then
  begin
    if (DisableIT and Wow64DisableWow64FsRedirection(Wow64FsEnableRedirection))
        or (not DisableIT and Wow64EnableWow64FsRedirection(Wow64FsEnableRedirection)) then
      Result := S_OK
    else
      Result := GetLastError;
  end else
    Result := {hier einen fehlercode für "nicht aktiv" einsetzen};
end;

Luckie 15. Okt 2009 23:34

Re: %programfiles% unter Windows 7 x64
 
Definier es mal als BOOL wie es auch in der Doku steht und frag GetLastError sofort ab, wer weiß, was da nach noch für Funktionsaufrufe kommen, die nicht fehlschlagen.

Sereby 15. Okt 2009 23:37

Re: %programfiles% unter Windows 7 x64
 
jetzt liefern beide Funktionen S_OK als Rückgabewert
rückgabewert geändert auf Bool und die Kurze Variante von unten samt nor = not änderung

aber die pfade sind weiterhin alle auf Programfiles x86

Luckie 15. Okt 2009 23:40

Re: %programfiles% unter Windows 7 x64
 
Und das bei himitsus Code?

Sereby 15. Okt 2009 23:41

Re: %programfiles% unter Windows 7 x64
 
ja, das bei seinem Code :)

Luckie 15. Okt 2009 23:42

Re: %programfiles% unter Windows 7 x64
 
Jetzt wird es komisch. Welche Rechte hat das Programm? Ist ein Manifest eingebunden?


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:42 Uhr.
Seite 3 von 4     123 4      

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