c# - Why does DirectoryEntry("WinNT://") not show group everyone? -
the below function (is supposed to) lists groups on local machine.
question: why "everyone" group not show ?
if change directory permissions user, see "everyone" group, must there, somewhere.
public shared function getallgroups() datatable return getallgroups(system.environment.machinename) end function ' tools.permissions.local.getallgroups() ' public shared function getallgroups(byval strdomain string) datatable dim dt new datatable dim dr datarow = nothing try dim bexception boolean = false dim delocalmachine system.directoryservices.directoryentry = new system.directoryservices.directoryentry("winnt://" + strdomain) 'dim derootobject system.directoryservices.directoryentry = getdirectoryentry(strpath, strusername, strpassword, bexception) ' if bexception return nothing end if each child system.directoryservices.directoryentry in delocalmachine.children try if stringcomparer.ordinalignorecase.equals(child.schemaclassname, "group") if not dt.columns.contains("members") dt.columns.add("members", gettype(system.string)) end if each strpropertyname string in child.properties.propertynames if not dt.columns.contains(strpropertyname) dt.columns.add(strpropertyname, gettype(system.string)) end if next strpropertyname dr = dt.newrow dim strmembers string = "" each member object in directcast(child.invoke("members"), ienumerable) using memberentry new system.directoryservices.directoryentry(member) try strmembers += memberentry.properties("name").value.tostring() + environment.newline console.writeline(memberentry.path) catch exfixmeisnotnullnotworking exception end try end using next dr("members") = strmembers each strpropertyname string in child.properties.propertynames if stringcomparer.ordinalignorecase.equals(strpropertyname, "objectsid") dim strsid string = "" try dim sidthissid new system.security.principal.securityidentifier(child.properties(strpropertyname).value, 0) strsid = sidthissid.tostring() ' http://stackoverflow.com/questions/1040623/convert-a-username-to-a-sid-string-in-c-net ' ' ntaccount ntaccount = (ntaccount)sid.translate( typeof( ntaccount ) ); ' ' dim ntaccount security.principal.ntaccount = ctype(sidthissid.translate(gettype(security.principal.ntaccount)), security.principal.ntaccount) ' catch ex exception end try dr(strpropertyname) = strsid else dr(strpropertyname) = child.properties(strpropertyname).value.tostring() end if next strpropertyname dt.rows.add(dr) end if catch ex exception ' don't finish because 1 fails console.writeline(ex.message.tostring & vblf & vblf & ex.stacktrace.tostring, msgboxstyle.critical, "fehler ...") end try next catch ex exception console.writeline(ex.message.tostring & vblf & vblf & ex.stacktrace.tostring, msgboxstyle.critical, "fehler ...") end try return dt end function ' listeverything
the everyone
group isn't standard group rather implicit group or built-in principal. if open local "users , groups" won't see listed there either. same true of other "groups" such authenticated users
. if want access these need use system.security.principal.wellknownsidtype
enumeration. windows 2008 article relevant older versions of windows, too.
Comments
Post a Comment