Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
App. WinForms / WPF .NET
Come visualizzare utenti locali
martedì 11 luglio 2006 - 16.14
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
us01739
Profilo
| Expert
641
messaggi | Data Invio:
mar 11 lug 2006 - 16:14
Buongiorno a tutti, forse mi sto perdendo in un bicchiere d'acqua, ma ho problemino che mi assilla...
Sto cercando di fare un'applicazione in vb.net che verifica quali sono gli utenti locali del gruppo administrators.
In VBS facevo più o meno così:
strComputer = "."
Set group = GetObject("WinNT://" & StrComputer & "/administrators,group")
For Each adminName In group.Members
WScript.Echo adminname.name
Next
.. ma in vb.net sono bloccato.
Grazie fin da ora a tutti.
Robby
---------------------------------------------------
Roberto Gelmini - Microsoft Certified Professional
www.robertogelmini.com
---------------------------------------------------
revontulet
Profilo
| Junior Member
106
messaggi | Data Invio:
ven 14 lug 2006 - 22:46
>Buongiorno a tutti, forse mi sto perdendo in un bicchiere d'acqua,
>ma ho problemino che mi assilla...
>Sto cercando di fare un'applicazione in vb.net che verifica quali
>sono gli utenti locali del gruppo administrators.
>In VBS facevo più o meno così:
anche io pensavo che fosse semplice prima di provarci poi quello che ho trovato /provato e' alquanto contorto rispetto al vbs
Premetto che non ho grande esperienza in .net mentre ho scritto un bel po di codice vbs per gestione utente locali e in AD.
usando obbligatoriamente il namespace System.DirectoryServices e un codice del tipo
Dim percorso As String
percorso = "WinNT://nomemacchina"
Dim wksComputer As New DirectoryEntry(percorso)
Dim wksUser As DirectoryEntry
For Each wksUser In wksComputer.Children
If wksUser.SchemaClassName = "User" Then
utente =
si ottengono tutti gli utenti locali .. per sapere se un utente e' membro di administrators
occorre impostare
Dim wksGroup As New DirectoryEntry("WinNT://nomemacchina/Administrators,group", "nomeadmin", "pwdadmin", False)
PathUtente = "WinNT://WORKGROUP/nomemacchina/" & utente
If wksGroup.Invoke("IsMember", PathUtente ) Then
TrovatoAdmin = utente
quindi invece che il comodo vbs che estrae la lista dei menbri di administrators
qui occorre verificare se ogni utente e ' membro di administrators
( notare la necessita della pwd in chiaro e quella del workgroup nella stringa del pathutente
N.B. -prova eseguita con macchina non in dominio)
esiste inoltre la possibilita di ottenere per ogni utente la lista dei gruppi locali a cui appartiene:
Dim objUser As New DirectoryEntry("WinNT://macchinalocale/utente")
Dim MembersCollection As Object
MembersCollection = objUser.Invoke("Groups")
Dim group As Object
For Each group In MembersCollection
ListBox1.Items.Add(New ListItem(group.Name))
Next
quello che proprio non ho trovato e il modo di ottenere direttamente la lista degli utenti partendo da un gruppo locale il codice che si potrebbe supporre
percorso = "WinNT://nomemacchina/administrators"
Dim wksgroup As New DirectoryEntry(percorso)
Dim wksUser As DirectoryEntry
For Each wksUser In wksgroup.Children
non funziona poiche' viene segnalato che la proprieta children vale per gli oggetti AD
us01739
Profilo
| Expert
641
messaggi | Data Invio:
lun 17 lug 2006 - 07:51
Alla fine ho risolto il problema in questo modo:
Dim MembersCollection As IADsMembers
Dim GroupToEnum As New DirectoryEntry("WinNT://" & hostname & "/administrators,group")
Dim MembersCollection As IADsMembers
Dim GroupToEnum As New DirectoryEntry("WinNT://" & hostname & "/administrators,group")
MembersCollection = GroupToEnum.Invoke("Members")
Dim filter As System.Object() = {"user"}
MembersCollection.Filter = filter
Dim user As IADsUser
Dim grp As IADsGroup
dim return_str,hostname as string
For Each user In MembersCollection
return_str = return_str & user.ADsPath.Substring(8) & ";"
Next
Dim grpfilter As System.Object() = {"group"}
MembersCollection.Filter = grpfilter
For Each grp In MembersCollection
return_str = return_str & grp.ADsPath.Substring(8) & ";"
Next
---------------------------------------------------
Roberto Gelmini - Microsoft Certified Professional
www.robertogelmini.com
---------------------------------------------------
revontulet
Profilo
| Junior Member
106
messaggi | Data Invio:
lun 17 lug 2006 - 13:34
complimenti per la soluzione
Nella mia risposta mi son davvero perso in un bicchier d'' acqua non considerando ADSI
comunque sulla mia macchina ( 2k3 in workgroup) richiamando activeds nella webform funziona anche cosi :
Dim grp As IADsGroup
Dim memberList As IADsMembers
Dim member As IADs
Dim return_str As String
grp = GetObject("WinNT://WORKGROUP/hostname/administrators")
memberList = grp.Members
For Each member In memberList
return_str = return_str & member.Name & ";"
Next
( codice da MSDN
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/adsi/adsi/iadsgroup_property_methods.asp
)
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !