in reply to Acquiring NT Group RID's

I believe that a RIDs are just a subset of SIDs and so you can find them via:

use Win32; my( $domain, $sid, $type ); foreach my $id ( "Administrator", "Administrators", "Domain Admins" ) { if( ! Win32::LookupAccountName( "", $id, $domain, $sid, $type ) ) { warn "Can't lookup SID ($id): $^E\n"; } else { print "$id is of type $type and belongs to $domain.\n"; } } __END__ Administrator is of type 1 and belongs to MY-COMPUTER. Administrators is of type 4 and belongs to BUILTIN. Domain Admins is of type 2 and belongs to MYDOMAIN.

Update: Oh, you probably want a nice string version of the RID... I'll try to look up how to do that tomorrow unless someone beats me to it (please). (:

        - tye (but my friends call me "Tye")

Replies are listed 'Best First'.
Re: (tye)Re: Acquiring NT Group RID's
by enoch (Chaplain) on Mar 21, 2001 at 21:44 UTC
    Yea, I need the nice number version (i.e. 512 or 9090 or whatever -- I wish I could just look in /etc/group for this). I was just researching using Win32::GetGroups to grab an array of all of the groups. Then, with a test account, iterate through the groups, setting the user's primary group each loop, and pulling the USER_PRIMARY_GROUP_ID from the user. Something akin to:
    use strict; use Win32::AdminMisc; my $user = "test_user"; my %hash,@groupList,$group; Win32::AdminMisc::GetGroups( "DOMAIN", GROUP_TYPE_GLOBAL, \@groupList) +; #iterate through groups foreach $group (@groupList) { #set the user's primary group Win32::AdminMisc::UserSetMiscAttributes('DOMAIN',$user,USER_PRIMAR +Y_GROUP => $group); #get user's attributes Win32::AdminMisc::UserGetMiscAttributes('WSOM',$user,\%hash); #print out group RID print $group. " has RID " . $hash{USER_PRIMARY_GROUP_ID}; }
    Unfortunately, Win32::AdminMisc::UserSetMiscAttributes('DOMAIN',$user,USER_PRIMARY_GROUP => $group) does not exist. There is no USER_PRIMARY_GROUP; there is only USER_PRIMARY_GROUP_ID. So, to set a user's primary group, you need the group's RID beforehand.

    Foiled Again,
    Jeremy