Einzelnen Beitrag anzeigen

Dezipaitor

Registriert seit: 14. Apr 2003
Ort: Stuttgart
1.701 Beiträge
 
Delphi 7 Professional
 
#10

Re: WinAPI Problem mit Rechten setzen in der Registry

  Alt 3. Mai 2007, 21:38
Ja das kommt davon, wenn die Leute nur abkupfern und nicht die Hintergründe zum Thema dazulesen. Stimmts RWarnecke?

Die ganze Geschichte oben funktioniert nur, wenn die Aufzählungstypen eine bestimmte Größe haben.
Das muss man setzen mit :

{$MINENUMSIZE 4}



Hier ein Beispiel mit den WinNT Apis von Assarbad und Co.

Delphi-Quellcode:
program Project1;

{$APPTYPE CONSOLE}

uses
  //jwa... download from [url]http://jedi-apilib.sourceforge.net[/url]
  jwaACLApi,
  jwaAccCtrl,

  jwaWinBase,
  jwaWindows,
  jwaNative,
  SysUtils;

var AdminSID: PSID;
    ExplicitAccesses: TExplicitAccess;
    Acl: PACL;
    dwRes : DWORD;
begin
  { TODO -oUser -cConsole Main : Hier Code einfügen }

  if AllocateAndInitializeSid(@SECURITY_NT_AUTHORITY, 2,
    SECURITY_BUILTIN_DOMAIN_RID, DOMAIN_ALIAS_RID_ADMINS, 0, 0, 0, 0, 0, 0,
    AdminSID) then
  begin
    FillChar(ExplicitAccesses,sizeof(ExplicitAccesses),0);
    ExplicitAccesses.grfAccessPermissions := KEY_READ;//KEY_ALL_ACCESS;
    ExplicitAccesses.grfAccessMode := SET_ACCESS;
    ExplicitAccesses.grfInheritance := NO_INHERITANCE;
    ExplicitAccesses.Trustee.TrusteeForm := TRUSTEE_IS_SID;
    ExplicitAccesses.Trustee.TrusteeType := TRUSTEE_IS_GROUP;
   ExplicitAccesses.Trustee.ptstrName := PAnsiChar(AdminSID);
  end;

  dwRes := SetEntriesInAcl(1, @ExplicitAccesses, 0, ACL);
  if (dwRes = 0) then
  begin
    LocalFree(ACL);
  end;


end.
Christian
Windows, Tokens, Access Control List, Dateisicherheit, Desktop, Vista Elevation?
Goto: JEDI API LIB & Windows Security Code Library (JWSCL)
  Mit Zitat antworten Zitat