Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Betriebssysteme (https://www.delphipraxis.net/27-betriebssysteme/)
-   -   Autostart ohne Adminrechte (https://www.delphipraxis.net/52539-autostart-ohne-adminrechte.html)

dangerfreak 5. Dez 2006 17:11

Re: Autostart ohne Adminrechte
 
So hab mal zwei functionen geschrieben aber seht selbs:
(bitte nicht aufrechtschreibfehler achten bin ersz 14 )



Delphi-Quellcode:

function IstAdmin: Boolean;
const
  SECURITY_NT_AUTHORITY: TSIDIdentifierAuthority =
  (Value: (0, 0, 0, 0, 0, 5));
  SECURITY_BUILTIN_DOMAIN_RID = $00000020;
  DOMAIN_ALIAS_RID_ADMINS    = $00000220;

var
  hAccessToken: THandle;
  ptgGroups: PTokenGroups;
  dwInfoBufferSize: DWORD;
  psidAdministrators: PSID;
  x: Integer;
  bSuccess: BOOL;
begin
  Result := False;
  bSuccess:=False;
  ptgGroups:=nil;
  psidAdministrators:=nil;
  try
    bSuccess := OpenThreadToken(GetCurrentThread, TOKEN_QUERY, True,
      hAccessToken);
    if not bSuccess then
    begin
      if GetLastError = ERROR_NO_TOKEN then
      bSuccess := OpenProcessToken(GetCurrentProcess, TOKEN_QUERY,
        hAccessToken);
    end;
    if bSuccess then
    begin
      GetMem(ptgGroups, 1024);
      bSuccess := GetTokenInformation(hAccessToken, TokenGroups,
        ptgGroups, 1024, dwInfoBufferSize);
      if bSuccess then
      begin
        AllocateAndInitializeSid(SECURITY_NT_AUTHORITY, 2,
          SECURITY_BUILTIN_DOMAIN_RID, DOMAIN_ALIAS_RID_ADMINS,
          0, 0, 0, 0, 0, 0, psidAdministrators);
        {$R-}
        for x := 0 to ptgGroups.GroupCount - 1 do
          if EqualSid(psidAdministrators, ptgGroups.Groups[x].Sid) then
          begin
            Result := True;
            Break;
          end;
        {$R+}
      end;
    end;
  finally
    if bSuccess then
      CloseHandle(hAccessToken);
    if Assigned(ptgGroups) then
      FreeMem(ptgGroups);
    if Assigned(psidAdministrators) then
      FreeSid(psidAdministrators);
  end;
end;

function CreateAutorunEntry: Boolean;
var
 Reg: TRegistry;
 AKind: TAutorunKind;
begin
 Result:=False;
 Reg := TRegistry.create;
 try
   if IstAdmin = True then
     Reg.RootKey := HKEY_LOCAL_MACHINE
   else
     Reg.Rootkey:= HKEY_CURRENT_USER;
   if Reg.RootKey = HKEY_LOCAL_MACHINE then
      Akind:=akRun;
   if Reg.Rootkey = HKEY_CURRENT_USER then
      AKind:=akUserRun;

   case AKind of
     akRun, akUserRun       : Result:=Reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Run', True);

   end;
   Reg.WriteString({Name des eintages},{Dateipfad});
 finally
   Reg.Free;
 end;
end;

Win32.API 5. Dez 2006 17:26

Re: Autostart ohne Adminrechte
 
Warum pushst du einen so alten thread?

Und wenn du die funktionen selber geschrieben hast:
Warum sind dann die variablen im ersten quelltext nach der ungarischen notation benannt und im zweiten nicht mehr?
Warum sind die formatierungen so unterschiedlich?

Kaufe dir naemlich nicht ab, dass du den ersten quelltext selber geschrieben hast ;)

grueße win32

Bernhard Geyer 5. Dez 2006 17:35

Re: Autostart ohne Adminrechte
 
Zitat:

Zitat von Win32.API
Kaufe dir naemlich nicht ab, dass du den ersten quelltext selber geschrieben hast ;)

Vermutlich selbst abgeschrieben denn Hier im Forum suchenIsAdmin-Implementierungen gibts ja einige (sehr ähnliche). Und vor allem ist sie nicht "Vista-Fest"

dangerfreak 5. Dez 2006 17:56

Re: Autostart ohne Adminrechte
 
sry wahrscheinlich habe ich das falsch formuliert, ich hab den quellcode nach meien voestellungen umgeschrieben und an meine bedürfnisse angepasst daher die formatirunegn. ganz alleine hääte ich das nie nie niemals hinbekommen .

mfg dabgerfreak

dangerfreak 5. Dez 2006 17:59

Re: Autostart ohne Adminrechte
 
übrigens die zweite function createautorunentry ist selber geschrieben

Win32.API 5. Dez 2006 18:20

Re: Autostart ohne Adminrechte
 
sieht man auch ;)

und die erste funktion ist nicht veraendert .. naja however ;3

dangerfreak 5. Dez 2006 18:28

Re: Autostart ohne Adminrechte
 
doch war schon da wurde der rückgabe wert noch irgentwie anders überprüft


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:12 Uhr.
Seite 2 von 2     12   

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