Announcement

Collapse
No announcement yet.

WinNT - Gruppenzugehörigkeit des angemeldeten Users (D3.X)

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

  • WinNT - Gruppenzugehörigkeit des angemeldeten Users (D3.X)

    <b>Hallo!<br>
    <br>
    Mit der API-Funktion </b>GetUserName<b> kann man den derzeit angemeldeten User ermitteln (WinNT).<br>
    Wie finde ich heraus, zu welcher Gruppe <i>(Administrator/Hauptbenutzer/.../Gast)</i> dieser gehört?!<br>
    <br>
    Danke!<br>

  • #2
    Falls Du mehr mit solchen Sachen (Benutzerrechte, ...) arbeitest, schau mal bei http://www.belcaf.com/ vorbei. Die Komponentensammlung NT-Set wäre evtl. etwas für deine Zwecke

    Comment


    • #3
      Hallo!<br>
      <br>
      Die Komponentensammlung 'NT-Set' ist ja ganz nett, aber entweder ich benutze sie vollkommen falsch, oder sie ist nicht ganz das richtige für mich... ~]<br>
      <br>
      <b>Kann mir nicht vielleicht doch irgendjemand mitteilen, wie ich herausfinde, ob der mit </b><font face="curier new">GetUserName(hWnd, pName)</font><b> errmittelte User -> Administrator, Benutzer oder Gast ist?!</b><br>
      <br>
      <p>V&nbsp;I&nbsp;E&nbsp;L&nbsp;E&nbsp;N&nbsp;&nbsp ;&nbsp;D&nbsp;A&nbsp;N&nbsp;K&nbsp;!</p><br>
      <br>
      Nico Stöckig

      Comment


      • #4
        Hallo,

        mittlerweile stehen für Windows NT und Windows 2000 mehrere Alternativen zur Verfügung, um diese Informationen ohne Hantieren mit den API-Funktionen abzurufen: <b>WMI</b> (Windows Management Instrumentation - siehe
        http://msdn.microsoft.com/msdnmag/issues/0400/wmi/wmi.asp) und <b>ADSI</b> (Active Directory Service - siehe http://www.microsoft.com/windows/server/Deploy/directory/default.asp). Während bei Windows 2000 beides vorinstalliert ist, muss unter Windows NT nachinstalliert werden.
        Den Zugriff auf ADSI demonstriert das folgende Beispiel:
        <pre>
        uses ActiveDs_TLB, ActiveX, ComObj;

        function GetObject(const Name : string): IDispatch;
        var
        Moniker : IMoniker;
        Eaten : integer;
        BindContext : IBindCtx;
        Dispatch : IDispatch;
        begin
        OleCheck(CreateBindCtx(0, BindContext));
        OleCheck(MkParseDisplayName(BindContext, PWideChar(WideString(Name)), Eaten, Moniker));
        OleCheck(Moniker.BindToObject(BindContext, NIL, IDispatch, Dispatch));
        Result := Dispatch;
        end;

        procedure TForm1.Button1Click(Sender: TObject);
        var
        sADSPath : String;
        Usr: IADsUser;
        l:longint;
        Grp: IAdsGroup;
        lst: IEnumVariant_D4;
        olevariant;
        begin
        sADSPath := 'WinNT://' + EditDomain.Text + '/' + EditPC.Text;
        Memo1.Lines.Add(sADSPath);
        Memo1.Lines.Add('---');
        Usr := GetObject(sADSPath) as IADsUser;
        memo1.lines.add('User: ' + Usr.FullName);
        Lst := usr.Groups._newenum as IEnumVariant_D4;
        while Lst.next(1,o,@l) = 0 do begin
        grp:=IUnknown(o) as IAdsGroup;
        if l = 1 then begin
        memo1.lines.add('Member of ' + o.name + ' groups');
        memo1.lines.add('Member of ' + grp.name + ' groups');
        end
        else
        memo1.lines.add( 'Err');
        end;
        end;
        </pre&gt

        Comment


        • #5
          Hi Leute mein Problem ist das ich in C++Builder ein Programm schreibe das auch viele mathematische Berechnungen ausführen muss. Ich suche also eine oder mehrere Komponenten die zumindest die Aufgabe übernehmen einen als String vorhandenen Term in nullkommanix auszurechenen. Ich habe schon Seitenweise Algorithmen geschrieben werde aber nicht ganz glücklich damit ,da ich mich doch gerne auf die wesentlichen Aufgaben konzentrieren möchte. Sowas muss doch schon mal jemand programmiert haben

          Comment

          Working...
          X