Código
' Get UserNames ' ( By Elektro ) ' ' Instructions: ' 1. Add a reference to 'System.DirectoryServices.AccountManagement'. ' 2. Imports System.DirectoryServices.AccountManagement ' ' Example Usages: ' Dim UserNames As String() = GetUserNames() ' ''' <summary> ''' Get the username accounts of the current machine. ''' </summary> ''' <returns>System.String[][].</returns> Public Function GetUserNames() As String() Dim pContext As New PrincipalContext(ContextType.Machine) Dim pUser As New UserPrincipal(pContext) Dim pSearcher As New PrincipalSearcher(pUser) Dim UserNames As String() = (From u As Principal In pSearcher.FindAll Select u.Name).ToArray pContext.Dispose() pSearcher.Dispose() pUser.Dispose() Return UserNames End Function
Código
' Get Users ' ( By Elektro ) ' ' Instructions: ' 1. Add a reference to 'System.DirectoryServices.AccountManagement'. ' 2. Imports System.DirectoryServices.AccountManagement ' ' Example Usages: ' Dim Users As Principal() = GetUsers() ' For Each User As Principal In Users() ' MsgBox(User.Name) ' Next ' ''' <summary> ''' Get the users of the current machine. ''' </summary> ''' <returns>Principal[][].</returns> Public Function GetUsers() As Principal() Dim pContext As New PrincipalContext(ContextType.Machine) Dim pUser As New UserPrincipal(pContext) Dim pSearcher As New PrincipalSearcher(pUser) Dim Users As Principal() = (From User As Principal In pSearcher.FindAll).ToArray Return Users End Function
Código
' Delete User Account ' ( By Elektro ) ' ' Instructions: ' 1. Add a reference to 'System.DirectoryServices.AccountManagement'. ' 2. Imports System.DirectoryServices.AccountManagement ' ' Example Usages: ' DeleteUserAccount("Username") ' DeleteUserAccount(New Security.Principal.SecurityIdentifier("S-1-5-21-250596608-219436059-1115792336-500")) ' ''' <summary> ''' Deletes an existing user account in the current machine. ''' </summary> ''' <param name="UserName">Indicates the account Username.</param> ''' <returns><c>true</c> if deletion success, <c>false</c> otherwise.</returns> Public Function DeleteUserAccount(ByVal UserName As String) As Boolean Dim pContext As New PrincipalContext(ContextType.Machine) Dim pUser As New UserPrincipal(pContext) Dim pSearcher As New PrincipalSearcher(pUser) Dim User As Principal = (From u As Principal In pSearcher.FindAll Where u.Name.Equals(UserName, StringComparison.OrdinalIgnoreCase)).FirstOrDefault If User Is Nothing Then Throw New Exception(String.Format("User with name '{0}' not found.", UserName)) End If Try User.Delete() Return True Catch ex As InvalidOperationException Throw New Exception(ex.Message) Finally pContext.Dispose() pSearcher.Dispose() pUser.Dispose() End Try Return False ' Failed. End Function
Código
''' <summary> ''' Deletes an existing user account in the current machine. ''' </summary> ''' <param name="UserSID">Indicates the account security identifier (SID).</param> ''' <returns><c>true</c> if deletion success, <c>false</c> otherwise.</returns> Public Function DeleteUserAccount(ByVal UserSID As Security.Principal.SecurityIdentifier) As Boolean Dim pContext As New PrincipalContext(ContextType.Machine) Dim pUser As New UserPrincipal(pContext) Dim pSearcher As New PrincipalSearcher(pUser) Dim User As Principal = (From u As Principal In pSearcher.FindAll Where u.Sid = UserSID).FirstOrDefault If User Is Nothing Then Throw New Exception(String.Format("User with SID '{0}' not found.", UserSID.Value)) End If Try User.Delete() Return True Catch ex As InvalidOperationException Throw New Exception(ex.Message) Finally pContext.Dispose() pSearcher.Dispose() pUser.Dispose() End Try Return False ' Failed. End Function
Código
' User Is Admin? ' ( By Elektro ) ' ' Instructions: ' 1. Add a reference to 'System.DirectoryServices.AccountManagement'. ' 2. Imports System.DirectoryServices.AccountManagement ' ' Example Usages: ' MsgBox(UserIsAdmin("Administrador")) ' MsgBox(UserIsAdmin(New Security.Principal.SecurityIdentifier("S-1-5-21-250596608-219436059-1115792336-500"))) ' ''' <summary> ''' Determines whether an User is an Administrator. ''' </summary> ''' <param name="UserName">Indicates the account Username.</param> ''' <returns><c>true</c> if user is an Administrator, <c>false</c> otherwise.</returns> Public Function UserIsAdmin(ByVal UserName As String) As Boolean Dim AdminGroupSID As New SecurityIdentifier("S-1-5-32-544") Dim pContext As New PrincipalContext(ContextType.Machine) Dim pUser As New UserPrincipal(pContext) Dim pSearcher As New PrincipalSearcher(pUser) Dim User As Principal = (From u As Principal In pSearcher.FindAll Where u.Name.Equals(UserName, StringComparison.OrdinalIgnoreCase)).FirstOrDefault If User Is Nothing Then Throw New Exception(String.Format("User with name '{0}' not found.", UserName)) End If Dim IsAdmin As Boolean = (From Group As GroupPrincipal In User.GetGroups Where Group.Sid = AdminGroupSID).Any pContext.Dispose() pSearcher.Dispose() pUser.Dispose() Return IsAdmin End Function
Código
''' <summary> ''' Determines whether an User is an Administrator. ''' </summary> ''' <param name="UserSID">Indicates the SID of the user account.</param> ''' <returns><c>true</c> if user is an Administrator, <c>false</c> otherwise.</returns> Public Function UserIsAdmin(ByVal UserSID As Security.Principal.SecurityIdentifier) As Boolean Dim AdminGroupSID As New SecurityIdentifier("S-1-5-32-544") Dim pContext As New PrincipalContext(ContextType.Machine) Dim pUser As New UserPrincipal(pContext) Dim pSearcher As New PrincipalSearcher(pUser) Dim User As Principal = (From u As Principal In pSearcher.FindAll Where u.Sid = UserSID).FirstOrDefault If User Is Nothing Then Throw New Exception(String.Format("User with SID '{0}' not found.", UserSID.Value)) End If Dim IsAdmin As Boolean = (From Group As GroupPrincipal In User.GetGroups Where Group.Sid = AdminGroupSID).Any pContext.Dispose() pSearcher.Dispose() pUser.Dispose() Return IsAdmin End Function
Código
' Set UserName ' ( By Elektro ) ' ' Instructions: ' 1. Add a reference to 'System.DirectoryServices.AccountManagement'. ' 2. Imports System.DirectoryServices.AccountManagement ' ' Example Usages: ' SetUserName("Username", "New Name") ' SetUserName(New Security.Principal.SecurityIdentifier("S-1-5-21-250596608-219436059-1115792336-500"), "New Name") ' ''' <summary> ''' Sets the UserName of an existing User account. ''' </summary> ''' <param name="OldUserName">Indicates an existing username account.</param> ''' <param name="NewUserName">Indicates the new name for the user account.</param> ''' <returns><c>true</c> if change success, <c>false</c> otherwise.</returns> Public Function SetUserName(ByVal OldUserName As String, ByVal NewUserName As String) As Boolean Dim pContext As New PrincipalContext(ContextType.Machine) Dim pUser As New UserPrincipal(pContext) Dim pSearcher As New PrincipalSearcher(pUser) Dim User As Principal = (From u As Principal In pSearcher.FindAll Where u.Name.Equals(OldUserName, StringComparison.OrdinalIgnoreCase)).FirstOrDefault If User Is Nothing Then Throw New Exception(String.Format("User with name '{0}' not found.", OldUserName)) End If Try User.Name = NewUserName User.Save() Return True Catch ex As InvalidOperationException Throw New Exception(ex.Message) Finally pContext.Dispose() pSearcher.Dispose() pUser.Dispose() End Try Return False ' Failed. End Function
Código
''' <summary> ''' Sets the UserName of an existing User account. ''' </summary> ''' <param name="UserSID">Indicates the SID of the user account.</param> ''' <param name="NewUserName">Indicates the new name for the user account.</param> ''' <returns><c>true</c> if change success, <c>false</c> otherwise.</returns> Public Function SetUserName(ByVal UserSID As Security.Principal.SecurityIdentifier, ByVal NewUserName As String) As Boolean Dim pContext As New PrincipalContext(ContextType.Machine) Dim pUser As New UserPrincipal(pContext) Dim pSearcher As New PrincipalSearcher(pUser) Dim User As Principal = (From u As Principal In pSearcher.FindAll Where u.Sid = UserSID).FirstOrDefault If User Is Nothing Then Throw New Exception(String.Format("User with SID '{0}' not found.", UserSID.Value)) End If Try User.Name = NewUserName User.Save() Return True Catch ex As InvalidOperationException Throw New Exception(ex.Message) Finally pContext.Dispose() pSearcher.Dispose() pUser.Dispose() End Try Return False ' Failed. End Function
Código
' Set Account DisplayName ' ( By Elektro ) ' ' Instructions: ' 1. Add a reference to 'System.DirectoryServices.AccountManagement'. ' 2. Imports System.DirectoryServices.AccountManagement ' ' Example Usages: ' SetAccountDisplayName("Username", "New Name") ' SetAccountDisplayName(New Security.Principal.SecurityIdentifier("S-1-5-21-250596608-219436059-1115792336-500"), "New Name") ' ''' <summary> ''' Sets the display name of an existing User account. ''' </summary> ''' <param name="OldDisplayName">Indicates an existing display name user account.</param> ''' <param name="NewDisplayName">Indicates the new display name for the user account.</param> ''' <returns><c>true</c> if change success, <c>false</c> otherwise.</returns> Public Function SetAccountDisplayName(ByVal OldDisplayName As String, ByVal NewDisplayName As String) As Boolean Dim pContext As New PrincipalContext(ContextType.Machine) Dim pUser As New UserPrincipal(pContext) Dim pSearcher As New PrincipalSearcher(pUser) Dim User As Principal = (From u As Principal In pSearcher.FindAll Where u.Name.Equals(OldDisplayName, StringComparison.OrdinalIgnoreCase)).FirstOrDefault If User Is Nothing Then Throw New Exception(String.Format("User with display name '{0}' not found.", OldDisplayName)) End If Try User.DisplayName = NewDisplayName User.Save() Return True Catch ex As InvalidOperationException Throw New Exception(ex.Message) Finally pContext.Dispose() pSearcher.Dispose() pUser.Dispose() End Try Return False ' Failed. End Function
Código
''' <summary> ''' Sets the display name of an existing User account. ''' </summary> ''' <param name="UserSID">Indicates the SID of the user account.</param> ''' <param name="NewDisplayName">Indicates the new display name for the user account.</param> ''' <returns><c>true</c> if change success, <c>false</c> otherwise.</returns> Public Function SetAccountDisplayName(ByVal UserSID As Security.Principal.SecurityIdentifier, ByVal NewDisplayName As String) As Boolean Dim pContext As New PrincipalContext(ContextType.Machine) Dim pUser As New UserPrincipal(pContext) Dim pSearcher As New PrincipalSearcher(pUser) Dim User As Principal = (From u As Principal In pSearcher.FindAll Where u.Sid = UserSID).FirstOrDefault If User Is Nothing Then Throw New Exception(String.Format("User with SID '{0}' not found.", UserSID.Value)) End If Try User.DisplayName = NewDisplayName User.Save() Return True Catch ex As InvalidOperationException Throw New Exception(ex.Message) Finally pContext.Dispose() pSearcher.Dispose() pUser.Dispose() End Try Return False ' Failed. End Function