Avatar billede angelenglen Nybegynder
09. juli 2009 - 01:00 Der er 5 kommentarer og
1 løsning

List XP/Vista brugere

Jeg mangler en funktion der lister alle lokale brugere på en XP eller Vista PC.

Det skal være "ægte" brugere/administratoere, ikke systemkonti.
(Administratorere er jo ofte tilfældet i XP, hvor brugere nok mest findes i Vista.)

Jeg har fundet frem til nedenstående, men for det første virker det kun på en Dansk XP (har ikke testet på Vista endnu), og for det andet lister den også systemkonti som fx "INTERAKTIV", "ASPNET" og "Godkendte brugere".

Har foreløbig kaldt funktionen med følgende String som parameter:
"WinNT://" & Environment.MachineName.ToString & "/Brugere"
eller
"WinNT://" & Environment.MachineName.ToString & "/Administratorer"
....men det er jo ikke særlig internationalt/universalt...


Her er min kode indtil videre:

Public Function GetLocalUsers(ByVal strLDAP_Path As String) As Hashtable
        Dim ADUsers As Object
        Dim ADUser As Object
        Dim ADEntry As New DirectoryEntry(strLDAP_Path)
        Dim RetArray As New Hashtable()

        Try
            ADUsers = ADEntry.Invoke("Members")
            For Each ADUser In ADUsers
                RetArray.Add(ADUser.Name, ADUser)
            Next
        Catch e As Exception
            Me.txtDebug.Text = Me.txtDebug.Text & e.Message & vbCrLf
            Return RetArray
        End Try
        Return RetArray
    End Function





ps.
Imports System.DirectoryServices - kræver reference til System.DirectoryServices
Avatar billede arne_v Ekspert
09. juli 2009 - 03:42 #1
Her er noget alternativt kode:

Imports System
Imports System.Management

Public Class MainClass
    Public Shared Sub Main(args As String())
        Dim wmiusers As ObjectQuery = New WqlObjectQuery("SELECT * FROM Win32_UserAccount")
        Dim users As New ManagementObjectSearcher(wmiusers)
        For Each user As ManagementObject In users.[Get]()
            Console.WriteLine(Convert.ToString(user("Name")) & " # " & Convert.ToString(user("Domain")) & " # " & Convert.ToString(user("FullName")))
        Next
        Console.ReadKey()
    End Sub
End Class

som jeg tror virker med både DK og UK sprog.
Avatar billede arne_v Ekspert
09. juli 2009 - 03:43 #2
Imports System
Imports System.Management

Public Class MainClass
    Public Shared Sub Main(args As String())
        Dim wmiusers As ObjectQuery = New WqlObjectQuery("SELECT * FROM Win32_UserAccount")
        Dim users As New ManagementObjectSearcher(wmiusers)
        For Each user As ManagementObject In users.[Get]()
            Console.WriteLine(user("Name") & " # " & user("Domain") & " # " & user("FullName"))
        Next
        Console.ReadKey()
    End Sub
End Class
Avatar billede angelenglen Nybegynder
09. juli 2009 - 14:46 #3
Lækkert, det gav mig en lidt længere liste, men er der mon en måde at sortere systemkonti fra?

Jeg fik fx følgende liste:
ASPNET
Administrator
SUPPORT_388444a4
__vmware_user__
Gæst
Hjælpeassistent

Så i dette konkrete tilfælde, burde ASPNET og SUPPORT jo sorteres fra. Hjælpeassistent er vel også en systemkonto?

Kan man evt. på nogen måde finde brugernes profilbillede?
For en systemkonto har jo formentligt ikke noget systembillede, så måske kan der skelnes mellem "ægte" brugere og systemkonti på den måde?
Avatar billede angelenglen Nybegynder
09. juli 2009 - 14:52 #4
Tror jeg fandt ud af det - det ser ud til at "FullName" kun er udfyldt ved systemkonti.
Det er sikkert ikke 100% generelt, men det er tæt nok på til mit konto.

Smid et svar for points, det er bare super :-)
Avatar billede angelenglen Nybegynder
09. juli 2009 - 14:52 #5
*tæt nok på til mit formål, skulle der stå :-)
Avatar billede arne_v Ekspert
09. juli 2009 - 15:44 #6
Generelt tror jeg at det er svaert at lave en veldefineret skellelinie mellem rigtige brugere og system konti.

Men hvis FullName virker for dig, saa er det jo fint.

Du kan se listen over felter her:
  http://msdn.microsoft.com/en-us/library/aa394507.aspx

Og et svar.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester



IT-JOB