AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Registry Permissions setzen

Offene Frage von "cytrinox"
Ein Thema von cytrinox · begonnen am 14. Mär 2007 · letzter Beitrag vom 14. Mär 2007
Antwort Antwort
cytrinox

Registriert seit: 4. Sep 2006
88 Beiträge
 
#1

Registry Permissions setzen

  Alt 14. Mär 2007, 08:38
Hi,

ich hab hier ein klitzekleines Problem... das mich jetzt schon über 3 Tage beschäftigt

Ich muss auf ein paar Rechnern per Delphi Programm bestimmte Rechte für einen Key in der Registry setzen,
genau genommen unter HKEY_LOCAL_MACHINE\Software\Firma\Produkt\Services . Die Schlüssel sind schon vorhanden, d.h. die kann ich nicht irgendwo anders hinschieben.

Und zwar braucht _jeder_ User auf dem Rechner Lese/Schreib-Rechte auf alle Values in diesem Schlüssel.

Jetzt hab ich google, delphi.* newsgroups etc. durchsucht aber was wirklich brauchbares kommt nicht dabei raus.
Jedoch eine kleine Komponente hab ich gefunden - die auch genau das machen würde was ich brauch - die aber leider irgendwas in der Registry verballert...

Hier die Sache bezüglich dieser Komponente: http://www.elists.org/pipermail/delp...ay/023728.html


Delphi-Quellcode:
procedure AddRegistrySecurity (key : HKEY; const userName : string);
var

  f : TNTRegistryObject;
  acl : TAccessControlList;
begin
  acl := Nil;


  f := TNTRegistryObject.Create(hndkey);
  try

    acl := TAccessControlList.Create;
    f.GetDiscretionaryAccessList(acl);

    acl.AddElement(TAccessControlElement.Create(userName, aeAccessAllowed, OBJECT_INHERIT_ACE or CONTAINER_INHERIT_ACE, FILE_ALL_ACCESS));
    f.SetDiscretionaryAccessList(acl);

  except
  ShowMessage('error2');
  end;
    acl.Free;
    f.Free;
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
if RegOpenKey(HKEY_LOCAL_MACHINE, 'SOFTWARE\Firma\Produkt\Services', hndKey) = ERROR_SUCCESS then
  begin
    AddRegistrySecurity(hndKey, 'Jeder');
    RegCloseKey(hndkey);
  end
  else
  begin
    showMessage('not found');
  end;
end;

Für ich das ganze aus gibts keinerlei Fehlermeldungen/Exceptions. Gehe ich allerdings mit regedit zu diesem Schlüssel und schau mir die Zugriffsrechte an, sagt regedit die Zugriffsrechte wären nicht in der richtigen Reihenfolge. Erst wenn regedit die dann wieder sortiert hat stehen die Zugriffsrechte richtig drin und erst DANN kann das Programm, welches auf diese Schlüssel schreibend zugreifen muss auch wirklich zugreifen (für die, die wie ich auf den Gedanken gekommen sind: egal was regedit anzeigt/sagt, vielleicht tuts ja trotzdem)

Dazu muss man noch sagen, dass diese Komponente eine Datei Namens Lmglobal.pas bzw dcu braucht.. die hatte ich hier aber nicht.
Bei google gibts dazu genau 3 Hits von irgend einer französischen Seite von der ich mir diese Datei dann gezogen hab... vielleicht liegt ja da auch irgendwo das Problem.

Ich benutze übrigens Delphi 2006, getestet hab das alles bisher nur unter WinXP mit SP2 in einer VMware, allerdings soll das von Windows 2000 bis Vista laufen - Würgarounds speziell für XP oder so bringen mir da nix.


Bitt Bitte Bitte mit Zucker obendrauf - hat irgendwer dafür ne Lösung?
  Mit Zitat antworten Zitat
Benutzerbild von Remko
Remko

Registriert seit: 10. Okt 2006
Ort: 's-Hertogenbosch, Die Niederlande
222 Beiträge
 
RAD-Studio 2010 Arc
 
#2

Re: Registry Permissions setzen

  Alt 14. Mär 2007, 09:14
CURRENT_MACHINE doesn't exist, it's either HKEY_CURRENT_USER (user has full permissions here) OR HKEY_LOCAL_MACHINE (user has only read permissions here). Per user settings are written to HKEY_CURRENT_USER, global program settings are storedin HKEY_LOCAL_MACHINE normally.
  Mit Zitat antworten Zitat
cytrinox

Registriert seit: 4. Sep 2006
88 Beiträge
 
#3

Re: Registry Permissions setzen

  Alt 14. Mär 2007, 09:29
Sorry, Tippfehler da oben, meinte natürlich HKEY_LOCAL_MACHINE

Im Quellcode stehts ja richtig...
  Mit Zitat antworten Zitat
Benutzerbild von Remko
Remko

Registriert seit: 10. Okt 2006
Ort: 's-Hertogenbosch, Die Niederlande
222 Beiträge
 
RAD-Studio 2010 Arc
 
#4

Re: Registry Permissions setzen

  Alt 14. Mär 2007, 10:33
See Registry Key Security and Access Rights

You can specify a security descriptor for a registry key when you call the MSDN-Library durchsuchenRegCreateKeyEx or MSDN-Library durchsuchenRegSetKeySecurity function. If you specify NULL, the key gets a default security descriptor. The ACLs in a default security descriptor for a key are inherited from its direct parent key.

To get the security descriptor of a registry key, call the GetNamedSecurityInfo or GetSecurityInfo function.

Delphi translation of RegSetSecurity can be found in the unit JwaWinReg.pas from the Jedi Api Lib
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:35 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