Announcement

Collapse
No announcement yet.

Administratorrechte ?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Administratorrechte ?

    hallo,

    ich suche eine einfache funktion, um unter nt/2000 herauszufinden, ob der derzeitige benutzer administratorrechte hat oder nicht.

    thx
    andre

  • #2
    Man kann es durch die Verwendung einer privilegierten Funktion ermitteln (ist ein sehr einfacher Ansatz).

    Dazu sind vorab noch einige Deklarationen notwendig:

    interface

    uses Classes, SysUtils, Windows;

    ...

    type
    SC_HANDLE = THandle;

    implementation

    ...

    function OpenSCManager(lpMachineName, lpDatabaseName: PChar;dwDesiredAccess: DWORD): SC_HANDLE; stdcall;
    external 'advapi32.dll' name 'OpenSCManagerA';

    function CloseServiceHandle(hSCObject: SC_HANDLE): BOOL; stdcall; external 'advapi32.dll' name 'CloseServiceHandle';

    function IsAdminLoggedOn(strServer : String) : Boolean;
    var
    hSC: SC_HANDLE;
    begin
    Result:=false;

    { Versuche eine privilegierte API - Funktion }
    hSC := OpenSCManager(PChar(strServer), nil, GENERIC_READ or GENERIC_WRITE or GENERIC_EXECUTE);
    Result := hSC <> 0;

    if Result then
    CloseServiceHandle (hSC);
    end;

    Als Variable "strServer" kann man auch den lokalen Rechnernamen angeben.

    Viele Grüsse

    Lars Fischer (www.lfsoft.com

    Comment


    • #3
      ok - funktioniert einwandfrei !

      vielen dank
      andr

      Comment

      Working...
      X