Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Die Delphi-IDE (https://www.delphipraxis.net/62-die-delphi-ide/)
-   -   Vista 2. Partition Registry-Zugriff schägt fehl (https://www.delphipraxis.net/116946-vista-2-partition-registry-zugriff-schaegt-fehl.html)

chaosben 9. Jul 2008 07:39


Vista 2. Partition Registry-Zugriff schägt fehl
 
Moinsen!

Das Problem ist folgendes: Ein und das selbe Programm (ohne Adminrechte ausgeführt) kann, wenn es auf der 2. Partition (D:, NTFS, alle Rechte vorhanden) liegt nicht in HKCU schreiben. Liegt es auf der 1. Partition (C:, System-Partition, NTFS) geht alles glatt.

Zum Testen nehme ich folgenden Code:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  Reg : TRegistry;
begin
  Reg := TRegistry.Create(KEY_ALL_ACCESS);
  Reg.RootKey := HKEY_CURRENT_USER;
  if Reg.OpenKey('Software\SPP', true) then
    reg.WriteString('Test', 'Ich war hier')
  else
    RaiseLastOSError;

  reg.Free;
end;
Liegt das Programm auf C: geht alles glatt. Liegt es auf D: liefert RaiseLastOSError
Code:
Ein Aufruf einer Betriebssystemfunktion ist fehlgeschlagen.
Habt ihr eine Idee?

Btw: Das ist das Grund für diesen Thread.

//edit: Interessant ist auch, das der Anlagen-Mananger eine Sicherheitswarnung für alle Programme (*.exe) bringt, wenn sie auf der 2.Partition liegen. Ich weiß zwar, wie man das abschaltet, aber das muss doch einen Grund haben. Normalerweise passiert das doch nur bei Netzlaufwerken.

MagicAndre1981 9. Jul 2008 07:52

Re: Vista 2. Partition Registry-Zugriff schägt fehl
 
Ich hab damit keine Probleme. Ich kann das Programm von überall starten und der Schlüssel wird bei aktivierter UAC trotzdem korrekt erstellt.

chaosben 9. Jul 2008 08:02

Re: Vista 2. Partition Registry-Zugriff schägt fehl
 
Danke André fürs Ausprobieren.

Normalerweise funktioniert das auch. Bei mir ging es bis zu letzten Vista-Neuinstallation auch ohne Probleme. Nur jetzt nicht mehr. Scheinbar vertraut Windows der Partition nicht mehr.

MagicAndre1981 9. Jul 2008 08:09

Re: Vista 2. Partition Registry-Zugriff schägt fehl
 
Hast du an den Rechten von HKEY_CURRENT_USER etwas verändert?

chaosben 9. Jul 2008 08:44

Re: Vista 2. Partition Registry-Zugriff schägt fehl
 
Nein.

MagicAndre1981 9. Jul 2008 10:34

Re: Vista 2. Partition Registry-Zugriff schägt fehl
 
Welches HResult ist denn "Ein Aufruf einer Betriebssystemfunktion ist fehlgeschlagen." überhaupt? Wenn man danach sucht findet man nix. Kannst du das englische Sprachpaket installieren und die Meldung vllt in Englisch posten, da findet man sicher mehr.

chaosben 9. Jul 2008 10:46

Re: Vista 2. Partition Registry-Zugriff schägt fehl
 
GetLastError liefert 0 zurück.

MagicAndre1981 9. Jul 2008 20:09

Re: Vista 2. Partition Registry-Zugriff schägt fehl
 
hmm, das ist komisch. :gruebel:

Tritt das bei allen Programmen auf?

Christian Seehase 9. Jul 2008 20:39

Re: Vista 2. Partition Registry-Zugriff schägt fehl
 
Moin Zusammen,

RaiseLastOSError liest den Fehler mit GetLastError aus, und zeigt diesen dann an.
Danach ist LastError wieder auf 0.

Statt RaiseLastOSError aufzurufen, wenn OpenKey fehlschlägt, einfach mal direkt den Wert von GetLastError ausgeben lassen.

chaosben 10. Jul 2008 05:29

Re: Vista 2. Partition Registry-Zugriff schägt fehl
 
@André: Ja, bei allen. (BDS, Putty, Installer, Project1.exe :) )

@Christian: Danke fürs Mitdenken. Der Code sah inzwischen schon so aus:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  Reg : TRegistry;
begin
  Reg := TRegistry.Create(KEY_ALL_ACCESS);
  Reg.RootKey := HKEY_CURRENT_USER;
  if Reg.OpenKey('\Software\SPP', true) then
    reg.WriteString('Test', 'Ich war hier')
  else
   MessageDlg(inttostr(getlasterror), mtWarning, [mbOK], 0);

  reg.Free;
end;

end.
:)


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:28 Uhr.
Seite 1 von 3  1 23      

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