Announcement

Collapse
No announcement yet.

Benutzergruppe ermitteln

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

  • Benutzergruppe ermitteln

    Hallo!

    Ich habe mit der API-Funktion "GetUserName" den derzeit angemeldeten User ermittelt. Wie kann ich jetzt herausfinden, zu welcher Gruppe dieser User gehört. Eigentlich reicht es mir auch, wenn ich Windows fragen kann, ob der User einer bestimmten Benutzergruppe "xy" angehört.

    Ein kleines Beispiel wäre nicht schlecht.

    Danke - Peter

  • #2
    Wenn mit Gruppe die Domäne gemeint ist (Systemsteuerung->System->Computername->Arbeitsgruppe

    dann schau hier

    http://www.bytesandmore.de/rad/cpp/snipp/sc08020.ph
    Christian

    Comment


    • #3
      Hi Christian,

      danke für die Antwort, aber die Domäne meine ich nicht.

      Unter Windows 2000 kann man, neben den Gruppen wie Administratoren, Benutzer oder Gäste, weitere Gruppen anlegen (Systemsteuerung->Benutzer und Kennwörter->Erweiterte Benutzerverwaltung) die dann z.B. nur Zugriff auf ein Verzeichnis bekommen dürfen. Ich möchte nun herausbekommen, ob ein bestimmter User dieser Gruppe angehört.
      Z.Zt verwalte ich die Mitglieder über eine separate Datei. Die muß ich aber ständig anpassen, wenn wieder neue Mitglieder einer best. Gruppe hinzugefügt werden.

      Bye - Pete

      Comment


      • #4
        Das habe ich noch gefunden:

        The group functions control global groups. A global group contains a number of user accounts from one domain that are grouped together under one group account name. A global group can contain only members from the domain where the global group is created. A global group can contain only user accounts; it cannot contain local groups or other global groups. The group functions are:

        NetGroupAdd
        NetGroupAddUser
        NetGroupDel
        NetGroupDelUser
        NetGroupEnum
        NetGroupGetInfo
        NetGroupGetUsers
        NetGroupSetInfo
        NetGroupSetUser
        Christian

        Comment


        • #5
          Hi Christian,

          ich glaube, daß ist genau das was ich suche. Leider funktioniert es nicht. Nach Aufruf der Funktion erhalte ich leider einen nicht definierten Fehlerwert und komme deshalb überhaupt nicht weiter. Ich poste hier mal eben meinen Code. Vielleicht hat das ja schon mal jemand benutzt und kann mir sagen was ich falsch mache:

          <CODE>
          NET_API_STATUS Res = 0;
          unsigned char *pBuffer;
          DWORD dwRead,dwTotal;
          DWORD hRes = NULL;

          NetApiBufferAllocate(10000,(LPVOID*)&pBuffer);

          do
          {
          // Hier will ich mir erst mal alle gültigen Namen der Gruppen holen
          Res = NetGroupEnum((const wchar_t*)"MyPCName",0,&pBuffer,10000,&dwRead,&dwTo tal,&hRes);
          if ((Res == 0 ) || (Res == ERROR_MORE_DATA))
          { for (DWORD i = 0; i < dwRead-1; i++)
          ListBox1->Items->Add(((GROUP_USERS_INFO_0*)pBuffer)[i].grui0_name);
          }
          else switch (Res)
          { case ERROR_ACCESS_DENIED:
          ShowMessage("The user does not have access to the requested information.");
          break;
          case NERR_InvalidComputer:
          ShowMessage("The computer name is invalid.");
          break;
          default:
          ShowMessage("ReturnValue is invalid.");
          break;
          }
          } while (Res == ERROR_MORE_DATA);
          </CODE>

          Bye - Pete

          Comment


          • #6
            Ich würde das ausprobieren, habe aber XP-Home. Das wird das wohl nix bringen:

            Versuch mal hier

            http://www.developing.ru/forum/topic3457.html

            Ist russisch, aber das wesentliche kann man lesen

            oder

            http://archives.neohapsis.com/archives/sf/pentest/2001-04/0056.html

            oder

            http://www.adras.com/Using-NetGroupEnum-in-a-service-System-Account.t941-144.htm
            Christian

            Comment


            • #7
              Hallo,

              in der MSDN-Doku zu NetGroupEnum() steht, dass der Rechnername mit "\\" beginnen muss!
              Ich würde an deiner Stelle den ersten Parameter auf NULL setzen, dann wird sowieso der localhost genommen. Ansonsten solltest du, wenn du ein UNICODE-Literal benutzt ein grosses "L" vor die Konstante setzen.

              Viel Glück!

              Gruss

              Reine

              Comment

              Working...
              X