From e0345cdd443451c15bf39bdfb73eeaa1e4077b6d Mon Sep 17 00:00:00 2001 From: proviq <63720596+proviq@users.noreply.github.com> Date: Sat, 13 Feb 2021 19:39:59 +0100 Subject: [PATCH] Add files via upload --- lusrmgr/My Project/AssemblyInfo.vb | 4 +- lusrmgr/My Project/Resources.Designer.vb | 10 - lusrmgr/My Project/Resources.resx | 37 --- lusrmgr/bin/Release/lusrmgr.exe | Bin 1065984 -> 1067520 bytes lusrmgr/src/ActiveDirectory.vb | 101 +++++-- lusrmgr/src/Dialogs/About.Designer.vb | 2 +- lusrmgr/src/Dialogs/AddToGroup.vb | 4 +- lusrmgr/src/Dialogs/Search.Designer.vb | 15 ++ lusrmgr/src/Dialogs/Search.vb | 42 +-- lusrmgr/src/Dialogs/ViewSettings.vb | 2 +- lusrmgr/src/Extensions/ActiveDsEx.vb | 14 +- lusrmgr/src/Extensions/ControlsEx.vb | 15 ++ lusrmgr/src/Form1.Designer.vb | 29 ++ lusrmgr/src/Form1.resx | 120 +++++++++ lusrmgr/src/Form1.vb | 3 + lusrmgr/src/Handlers/ADHandler.vb | 62 +++-- lusrmgr/src/Handlers/QuickSearch.vb | 6 +- lusrmgr/src/Handlers/ViewHandler.vb | 17 +- lusrmgr/src/HelperModules/COMErr.vb | 39 ++- lusrmgr/src/HelperModules/Config.vb | 10 +- lusrmgr/src/Interop/TaskDialog.vb | 2 +- lusrmgr/src/MainForm.Designer.vb | 113 ++++---- lusrmgr/src/MainForm.resx | 2 +- lusrmgr/src/MainForm.vb | 68 ++--- lusrmgr/src/PropertyWindows/AddGroup.vb | 6 +- .../src/PropertyWindows/AddUser.Designer.vb | 39 ++- lusrmgr/src/PropertyWindows/AddUser.vb | 12 +- lusrmgr/src/PropertyWindows/EditGroup.vb | 10 +- .../src/PropertyWindows/EditUser.Designer.vb | 251 +++++++++++------- lusrmgr/src/PropertyWindows/EditUser.resx | 30 +-- lusrmgr/src/PropertyWindows/EditUser.vb | 42 +-- lusrmgr/src/PropertyWindows/SetPw.vb | 6 +- lusrmgr/src/PropertyWindows/Times.vb | 11 +- 33 files changed, 704 insertions(+), 420 deletions(-) create mode 100644 lusrmgr/src/Form1.Designer.vb create mode 100644 lusrmgr/src/Form1.resx create mode 100644 lusrmgr/src/Form1.vb diff --git a/lusrmgr/My Project/AssemblyInfo.vb b/lusrmgr/My Project/AssemblyInfo.vb index 424c2d5..8d17c7a 100644 --- a/lusrmgr/My Project/AssemblyInfo.vb +++ b/lusrmgr/My Project/AssemblyInfo.vb @@ -31,5 +31,5 @@ Imports System.Runtime.InteropServices ' übernehmen, indem Sie "*" eingeben: ' - - + + diff --git a/lusrmgr/My Project/Resources.Designer.vb b/lusrmgr/My Project/Resources.Designer.vb index 4509f35..6bf1f50 100644 --- a/lusrmgr/My Project/Resources.Designer.vb +++ b/lusrmgr/My Project/Resources.Designer.vb @@ -200,16 +200,6 @@ Namespace My.Resources End Get End Property - ''' - ''' Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. - ''' - Friend ReadOnly Property Shield() As System.Drawing.Bitmap - Get - Dim obj As Object = ResourceManager.GetObject("Shield", resourceCulture) - Return CType(obj,System.Drawing.Bitmap) - End Get - End Property - ''' ''' Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. ''' diff --git a/lusrmgr/My Project/Resources.resx b/lusrmgr/My Project/Resources.resx index 6942a22..cc1bd86 100644 --- a/lusrmgr/My Project/Resources.resx +++ b/lusrmgr/My Project/Resources.resx @@ -476,43 +476,6 @@ SVJ4pQlss8a8FF295AoD8tS1yLxUtbQDsc7T1tNU18DidZYFLuGT8MdZwYRYbQcS6NvPV9UgW1mDdEWl QE5rPtWx4ykyRnWYOPo3ks6XGHKVVUKQVRpFrqylN1KLjOJyGeN/1GrsIeIre8jB4lJPp108kpgsyyqt JkE19h04lJQiyyiie1t5YC21hYghfk22jqBmxn4C9Q+Y/mU/loIAAAAASUVORK5CYII= - - - - - iVBORw0KGgoAAAANSUhEUgAAABwAAAAbCAYAAABvCO8sAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO - wwAADsMBx2+oZAAAB1ZJREFUSEutlndYVGcWxkd6EQURMShdQAPDgqgrdTWYPOiKxpJs3GUfQRLWhIgM - IGIABQYVCaAoLEgTE0CKonTpMAgMbYYmIEXpnaHDjKLvfmT8Q3dTzMbf85zn/nHPed97z3fu913K72Hr - 1q3Ukycdrrt7+DxydfN4tP/gQRctLS3q69vvDwUFBVlb26++Tkq539bMKkZXUwFaWXkoYxS+DA4Jr9XV - 1T1C0kT42X8MUSqVahoZfSu6paV5cqqvEGOVthh5aIzeZE20px1DZ0MeUtPzRlxcXK9paCjrkZoV/NJ3 - R5CErJ6e3t6AgIDQquq61uGBp5juzsRcixdeNB4Hl2GA2VRxjEZS0H5TC93MKDQ0Nr6KT7zbYGVldVla - WtqMaEj+pPYrCHh6eu7Nzc1PYDKryrq6ng4ODXS/mh1kgtOVDt44Axi7j1ddF7BUsx/cbEXMxQlj7AYx - 9ZNAU+ynaKp8gPKKyhcP0jOeRkXfKvSh00PJGhsRbSG+xdtoJdxJqAS44PRXYrQpGOMsD8w9i8UrbgfA - 68CL4XRMsL0xkH8IXfGa6I1chckIUYwHCaLHm4KG78RRFbIPzORzZI2LwGRWvrK1tWUSbV2+xRsoKWkZ - JSXe7lt8QgOnRBWLrH14+YwOjKcDU6XATCbaqsJxLfB7ONFo+PTIF6D93QDj/xYG54Y4Rq6IYshLGD3O - FLTaU1DitA4V+Unw8qY/JvL6fJc3UFbXMYy7HdbLbbMFr0aDrNXnWOr0wsvuYGIcAHS7g51NA53uA/tv - HXDg0N/wzecGGLpKASdIBEOXxTDoI4n+c2Los6OA9ZUMijNj4eN7+ZcNb0ff6F14/E9wK5TAq7PA80Y7 - 8BpssFh1AGCaouYHc5y0s4XlwUMw2GkCu7+qY4ROwej5Feh3E0G/qwR6nVaix1YQbBsZFKXFwJt+qYXI - /4yhsrphXFxC71zTCSyUKIBXuRvcaksslv4Zc9kbgBwplF/dCFNDA8jJKUBMYiWO7ZDC2DkKhkkb+x0E - 0edADE9LoddOFGy7NSjJuAUv+sVlw618lzdYNkxISOqdqf8ScwXrwavYBW75J1jIU8FMsiCWYijIdxSH - gowwSDpWCIjghPFqcNwpGDlLwYCzEPqdJch1NQYdJME+tQ6MrNu/0lJiGJ+Q0sthO2MmV54YmhDDPZi5 - p4TR7wUxT6aQYS8ORRkxUASEIbVGHjQLecx4kZZeEMawpziG3KUx5CGHIbc1qD2rjIrCu/C95NdA5P93 - SteuXat/Jyn98XhTEKZzPgB3uZVZ5pi4poQRT0HM+VDAdBSDqvwqrFy9Bqoa2rhwWBkLfiKY8JcmIYdx - /w0Y81fCmO8HqPTWRlVFEfwDAkuJvAbf5W2Uo2MTc3pY0ZhII21M+ROmYj/CxFVVjHgLYnb5O3MSxRYV - WazfqILthma4ZqOJxWBpTIUpYjpiE6YiNTFJdp6J68pgBhmhqpZNpvriA6K9gW/xNpJ+VwKvs5mZGEw2 - wWS4JqZiTMG5roFRbxHMXqCg2VkUOmryUNHUhrnFfkTYU8GLVsRMvDZmk/XJWpNI0MMQMS2P/geKGZXP - 7e3t/Yn2Sr7Ff2FmZmaXW8CYHci0xmSYCiYjt4ETokMMJTB9noLOM0LYRZWHLpWKvRafINZRG0spWzCf - vhPz2caYzzTCfOo2dIRvRllWNO4kJg+Qk+aL1/I/i0bUrR8YHdV3MRyhQVq1BZOhuhi/KIsR9xWY8CC7 - iIs4Mr5Zh8KzG9EXpoXFtB1kks2wWLQbC7kmmL6nh+qw3SgrZcDF1TWLaGrypX8Bc3NzT0ZZObc71QpT - IUqYDNbGxBUyDOdFyFsKIMZKDvv/oo+z1rvQHrENL8hRtVhiTk6QPeAVmqEzahMY94NAPrFRISGBr4nk - bx5Xm/39A5mttfkYitqC6VANTASoYc5XGn3fSUJPUwEK6nrYc8AKUZ4fA0XEsOzjnww5qVSUhR8Em13/ - 0tLSMoVoqfMlfwM1NbXjBYUlkx1FARiP1sFMqA6myLhzfGTgZLEBRma78a8vjyMvwARL5K24DHPM5+5A - bfh21D3KRlj4zSdE5jBf7d0QOnLk6M16NmupM9cDU3GGmLm5A7OBqhi4qIi8cx+i8so2TKUYgZdvjsU8 - YzyJ2AxWXiSKS8tmFBUV6URDlC/17iicpjnnP26sxtNcN8ylHcZ8wj4sxBrjOXkA3l2y9WXtw2KOOfri - 9cHK8EMdq/65sbFpDKldz5f4ncjLy2v70C/VtDXXoqv4EiYensD8Q2sy/scwn/UZpjMOoDP+I7QVh6Cp - uXXJxsY2k5Rt5lf/n2zapLyT7nu5op5Vg2e1P6I9xxVtaafRknoSbek09JA/OGZ1He/UqdMZ4uLi21+X - /TFUVTdSz5xxu5ObW7DQ2tKE/t5O9PV0oP1JK1LupY0dPXr0Bkn7kJ/9/pC1trb+1t3d856H5/l8Gs25 - wNGRlkjG34rcW81Pef8Ik1hFQuZ1SJFY/q18RyiU/wAEiY4+tOV/NAAAAABJRU5ErkJggg== diff --git a/lusrmgr/bin/Release/lusrmgr.exe b/lusrmgr/bin/Release/lusrmgr.exe index 03ae7ed90135c3aadfb727d6aa14e51d794bf0fd..df36f0cb4aac4504d6f8e0705b26a67eb4014878 100644 GIT binary patch delta 192699 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
gsdMMSuvj)Bn4&h2{)yCq=p#Ks3r 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 ''' Private Sub UpdateLists() - If Not mainF.ViewHandler.GetView() = ViewHandler_C.View.MachineRoot AndAlso mainF.ADHandler.currentAD().Equals(Me) Then + If Not mainF.ViewHandler.GetView() = ViewHandler_C.View.MachineRoot AndAlso mainF.ADHandler.currentAD Is Me Then mainF.ViewHandler.RefreshMainList() End If mainF.ViewHandler.RefreshSearch() @@ -73,14 +73,6 @@ Public Class ActiveDirectory main.Close() End Sub - Public Shadows Function Equals(obj As ActiveDirectory) As Boolean - If GetID() = obj.GetID() Then - Return True - Else - Return False - End If - End Function - #Region "Constructors" Public Sub New(mainForm As MainForm) @@ -146,6 +138,10 @@ Public Class ActiveDirectory Return isLoading_ End Function + Public Function IsRemoteAD() As Boolean + Return mainF.ADHandler.localAD IsNot Me + End Function + Public Function ConnectionErrorOccurred() As Boolean Return conErr End Function @@ -272,7 +268,11 @@ Public Class ActiveDirectory End If Return Nothing Catch ex As Exception - ShowUnknownErr(parentWnd, ex.Message) + If ex.HResult = &H80070035 Then 'Network path not found error + TaskDialog(parentWnd, "Local users and groups", "Could not access computer", "The network path could not be found.", TASKDIALOG_COMMON_BUTTON_FLAGS.TDCBF_OK_BUTTON, TD_ERROR_ICON, 0, True) + Else + ShowUnknownErr(parentWnd, ex.Message) + End If Return Nothing End Try End Function @@ -294,7 +294,11 @@ Public Class ActiveDirectory End If Return Nothing Catch ex As Exception - ShowUnknownErr(parentWnd, ex.Message) + If ex.HResult = &H80070035 Then 'Network path not found error + TaskDialog(parentWnd, "Local users and groups", "Could not access computer", "The network path could not be found.", TASKDIALOG_COMMON_BUTTON_FLAGS.TDCBF_OK_BUTTON, TD_ERROR_ICON, 0, True) + Else + ShowUnknownErr(parentWnd, ex.Message) + End If Return Nothing End Try End Function @@ -317,7 +321,7 @@ Public Class ActiveDirectory ''' Refreshes the user and group database. ''' ''' - Public Sub RefreshDS() + Public Sub RefreshDS(Optional DoNotUpdateLists As Boolean = False) GroupList.Clear() UserList.Clear() @@ -370,7 +374,7 @@ Public Class ActiveDirectory Return End If - UpdateLists() + If Not DoNotUpdateLists Then UpdateLists() End Sub #Region "Rename handlers" @@ -390,18 +394,48 @@ Public Class ActiveDirectory Dim dsuserp As DsEntry = FindUser(Name, parentWnd) If dsuserp IsNot Nothing AndAlso newName <> dsuserp.Name Then Try - dsuserp.Rename(newName) - dsuserp.CommitChanges() + 'On the local machine, WMI is used for renaming because of the better performance it provides. + If Not IsRemoteAD() Then + Dim result As Integer = 0 + Try + 'For better performance, the WMI Win32_UserAccount class is used to invoke the rename method locally. + Dim wmi = GetObject("winmgmts:{impersonationLevel=impersonate}!\\localhost\root\cimv2") + Dim accounts = wmi.ExecQuery("Select * from Win32_UserAccount Where Name = '" & Name & "'") + result = accounts.ItemIndex(0).Rename(newName) + Catch ex As Exception + Dim a = ex.GetType() + 'Fallback to DirectoryServices + If Not Warnings.Exists(Function(w As ADWarning) As Boolean + Return w.Title = "WMI initialization failed" + End Function) Then + 'Add a warning message if not previously done + Warnings.Add(New ADWarning("WMI initialization failed", "Failed to invoke WMI initialization during rename.", ex.Message)) + mainF.ViewHandler.RefreshWarnings() + End If + dsuserp.Rename(newName) + dsuserp.CommitChanges() + End Try + + If result <> SystemErrorCodes.SUCCESS Then + 'Fallback to DirectoryServices to recieve further information about the error + dsuserp.Rename(newName) + dsuserp.CommitChanges() + End If + Else + dsuserp.Rename(newName) + dsuserp.CommitChanges() + End If Dim fullName As String = UserList(Name) UserList.Remove(Name) UserList.Add(newName, fullName) UpdateLists() + RefreshDS() RaiseEvent OnRenameUser(Name, newName) Return True Catch ex As UnauthorizedAccessException - ShowPermissionDeniedErr(mainF.Handle) + ShowPermissionDeniedErr(mainF.Handle, IsRemoteAD()) Return False Catch ex As Runtime.InteropServices.COMException If ex.ErrorCode = COMErrorCodes.GROUP_NOT_FOUND_USER Then @@ -425,17 +459,46 @@ Public Class ActiveDirectory Dim dsgrp As DsEntry = FindGroup(Name, parentWnd) If dsgrp IsNot Nothing AndAlso newName <> dsgrp.Name Then Try - dsgrp.Rename(newName) - dsgrp.CommitChanges() + 'On the local machine, WMI is used for renaming because of the better performance it provides. + If Not IsRemoteAD() Then + Dim result As Integer = 0 + Try + 'For better performance, the WMI Win32_Group class is used to invoke the rename method locally. + Dim wmi = GetObject("winmgmts:{impersonationLevel=impersonate}!\\localhost\root\cimv2") + Dim groups = wmi.ExecQuery("Select * from Win32_Group Where Name = '" & Name & "'") + result = groups.ItemIndex(0).Rename(newName) + Catch ex As Exception + 'Fallback to DirectoryServices + If Not Warnings.Exists(Function(w As ADWarning) As Boolean + Return w.Title = "WMI initialization failed" + End Function) Then + 'Add a warning message if not previously done + Warnings.Add(New ADWarning("WMI initialization failed", "Failed to invoke WMI initialization during rename.", ex.Message)) + mainF.ViewHandler.RefreshWarnings() + End If + dsgrp.Rename(newName) + dsgrp.CommitChanges() + End Try + + If result <> SystemErrorCodes.SUCCESS Then + 'Fallback to DirectoryServices to recieve further information about the error + dsgrp.Rename(newName) + dsgrp.CommitChanges() + End If + Else + dsgrp.Rename(newName) + dsgrp.CommitChanges() + End If GroupList.Remove(Name) GroupList.Add(newName) UpdateLists() + RefreshDS() RaiseEvent OnRenameGroup(Name, newName) Return True Catch ex As UnauthorizedAccessException - ShowPermissionDeniedErr(parentWnd) + ShowPermissionDeniedErr(parentWnd, IsRemoteAD()) Return False Catch ex As Runtime.InteropServices.COMException If ShowCOMErr(ex.ErrorCode, parentWnd, ex.Message, Name) = COMErrResult.REFRESH Then diff --git a/lusrmgr/src/Dialogs/About.Designer.vb b/lusrmgr/src/Dialogs/About.Designer.vb index 9a49f41..0d26800 100644 --- a/lusrmgr/src/Dialogs/About.Designer.vb +++ b/lusrmgr/src/Dialogs/About.Designer.vb @@ -88,7 +88,7 @@ Partial Class About Me.Label4.Name = "Label4" Me.Label4.Size = New System.Drawing.Size(452, 39) Me.Label4.TabIndex = 8 - Me.Label4.Text = "Version 1.6.2 (x86)" + Me.Label4.Text = "Version 1.6.3 (x86)" Me.Label4.TextAlign = System.Drawing.ContentAlignment.MiddleCenter ' 'Label5 diff --git a/lusrmgr/src/Dialogs/AddToGroup.vb b/lusrmgr/src/Dialogs/AddToGroup.vb index 56d6758..8669d20 100644 --- a/lusrmgr/src/Dialogs/AddToGroup.vb +++ b/lusrmgr/src/Dialogs/AddToGroup.vb @@ -103,7 +103,7 @@ Public Class AddToGroup dstListView.Items.Add(item.Clone()) Catch ex As UnauthorizedAccessException - ShowPermissionDeniedErr(Handle) + ShowPermissionDeniedErr(Handle, AD.IsRemoteAD()) Return Catch ex As Runtime.InteropServices.COMException If ShowCOMErr(ex.ErrorCode, Handle, ex.Message, item.Text) <> COMErrResult.LOOP_CONTINUE Then @@ -128,7 +128,7 @@ Public Class AddToGroup dstListView.Items.Add(group.Name, 1) Catch ex As UnauthorizedAccessException - ShowPermissionDeniedErr(Handle) + ShowPermissionDeniedErr(Handle, AD.IsRemoteAD()) Return Catch ex As Runtime.InteropServices.COMException If ShowCOMErr(ex.ErrorCode, Handle, ex.Message, item.Text) <> COMErrResult.LOOP_CONTINUE Then diff --git a/lusrmgr/src/Dialogs/Search.Designer.vb b/lusrmgr/src/Dialogs/Search.Designer.vb index b96709d..1ef16e7 100644 --- a/lusrmgr/src/Dialogs/Search.Designer.vb +++ b/lusrmgr/src/Dialogs/Search.Designer.vb @@ -46,6 +46,7 @@ Partial Class Search Me.GroupBox1 = New System.Windows.Forms.GroupBox() Me.SearchBuiltin = New System.Windows.Forms.CheckBox() Me.GroupBox2 = New System.Windows.Forms.GroupBox() + Me.NoAutoRefresh = New System.Windows.Forms.CheckBox() Me.SRangeCurrent = New System.Windows.Forms.RadioButton() Me.SRangeAll = New System.Windows.Forms.RadioButton() Me.list = New lusrmgr.ListView() @@ -260,6 +261,7 @@ Partial Class Search ' 'GroupBox2 ' + Me.GroupBox2.Controls.Add(Me.NoAutoRefresh) Me.GroupBox2.Controls.Add(Me.SRangeCurrent) Me.GroupBox2.Controls.Add(Me.SRangeAll) Me.GroupBox2.Location = New System.Drawing.Point(295, 83) @@ -269,6 +271,18 @@ Partial Class Search Me.GroupBox2.TabStop = False Me.GroupBox2.Text = "Search range" ' + 'NoAutoRefresh + ' + Me.NoAutoRefresh.AutoSize = True + Me.NoAutoRefresh.Enabled = False + Me.NoAutoRefresh.FlatStyle = System.Windows.Forms.FlatStyle.System + Me.NoAutoRefresh.Location = New System.Drawing.Point(30, 74) + Me.NoAutoRefresh.Name = "NoAutoRefresh" + Me.NoAutoRefresh.Size = New System.Drawing.Size(183, 20) + Me.NoAutoRefresh.TabIndex = 4 + Me.NoAutoRefresh.Text = "Do not auto refresh machine" + Me.NoAutoRefresh.UseVisualStyleBackColor = True + ' 'SRangeCurrent ' Me.SRangeCurrent.AutoSize = True @@ -372,4 +386,5 @@ Partial Class Search Friend WithEvents cSeperator As System.Windows.Forms.ToolStripSeparator Friend WithEvents cShowBuiltInDetails As System.Windows.Forms.ToolStripMenuItem Friend WithEvents cCopySID As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents NoAutoRefresh As System.Windows.Forms.CheckBox End Class diff --git a/lusrmgr/src/Dialogs/Search.vb b/lusrmgr/src/Dialogs/Search.vb index 00310b9..d57975b 100644 --- a/lusrmgr/src/Dialogs/Search.vb +++ b/lusrmgr/src/Dialogs/Search.vb @@ -16,6 +16,13 @@ Public Class Search list.SmallImageList.Images.Add(mainForm.ListIcons.Images(0)) list.SmallImageList.Images.Add(mainForm.ListIcons.Images(1)) list.SmallImageList.Images.Add(mainForm.ListIcons.Images(1)) + + AddHandler mainForm.ADHandler.CurrentADChanged, Sub() + If Not NoAutoRefresh.Checked AndAlso SRangeCurrent.Checked Then + currentADObjCount = mainF.ADHandler.currentAD.UserList.Count + mainF.ADHandler.currentAD.GroupList.Count + mainF.ADHandler.currentAD.BuiltInPrincipals.Count + SearchConditionsChanged(Nothing, Nothing) + End If + End Sub End Sub Private Property OnlyLocal As Boolean @@ -87,15 +94,16 @@ Public Class Search End If OnlyLocal = False list.Groups.Clear() + totalObjCount = 0 'Count the total number of elements to be searched and add a group for each machine For Each node As TreeNode In mainF.tw.Nodes - Dim AD As ActiveDirectory = node.Tag + Dim AD As ActiveDirectory = DirectCast(node.Tag, ActiveDirectory) totalObjCount += AD.UserList.Count + AD.GroupList.Count + AD.BuiltInPrincipals.Count list.Groups.Add(AD.GetID(), AD.GetDisplayName()) Next End If - currentADObjCount = mainF.ADHandler.currentAD().UserList.Count + mainF.ADHandler.currentAD().GroupList.Count + mainF.ADHandler.currentAD().BuiltInPrincipals.Count + currentADObjCount = mainF.ADHandler.currentAD.UserList.Count + mainF.ADHandler.currentAD.GroupList.Count + mainF.ADHandler.currentAD.BuiltInPrincipals.Count SearchConditionsChanged(Nothing, Nothing) End Sub @@ -148,7 +156,7 @@ Public Class Search 'Select the TreeView node For Each node As TreeNode In mainF.tw.Nodes - If DirectCast(node.Tag, ActiveDirectory).Equals(AD) Then + If DirectCast(node.Tag, ActiveDirectory) Is AD Then mainF.tw.SelectedNode = node.Nodes(list.SelectedItems(0).ImageIndex) wasFound = True End If @@ -188,7 +196,7 @@ Public Class Search ''' ''' ''' - Private Function useInterval() As Boolean + Private Function UseInterval() As Boolean If SRangeAll.Checked Then If totalObjCount > 600 Then Return True @@ -210,7 +218,7 @@ Public Class Search If SRangeAll.Checked Then SearchAll() Else - Search(mainF.ADHandler.currentAD()) + Search(mainF.ADHandler.currentAD) End If PictureBox1.Hide() @@ -218,7 +226,7 @@ Public Class Search UpdateResultCounter() End Sub - Private Sub SearchConditionsChanged(sender As Object, e As EventArgs) Handles SearchBox.TextChanged, SearchUsers.CheckedChanged, SearchGroups.CheckedChanged, SearchBuiltin.CheckedChanged, SRangeAll.CheckedChanged, SRangeCurrent.CheckedChanged + Private Sub SearchConditionsChanged(sender As Object, e As EventArgs) Handles SearchBox.TextChanged, SearchUsers.CheckedChanged, SearchGroups.CheckedChanged, SearchBuiltin.CheckedChanged, SRangeAll.CheckedChanged, SRangeCurrent.CheckedChanged, NoAutoRefresh.CheckedChanged list.Items.Clear() If SearchBox.TextLength = 0 Then @@ -232,7 +240,7 @@ Public Class Search Return End If - If useInterval() Then + If UseInterval() Then SearchInterval.Stop() SearchInterval.Start() PictureBox1.Show() @@ -243,7 +251,7 @@ Public Class Search If SRangeAll.Checked Then SearchAll() Else - Search(mainF.ADHandler.currentAD()) + Search(mainF.ADHandler.currentAD) End If UpdateResultCounter() @@ -270,7 +278,7 @@ Public Class Search InitSearch() End If ElseIf item.ImageIndex = 2 Then - Dim Principal As BuiltInPrincipal = mainF.ADHandler.currentAD().GetPrincipalByName(item.Text) + Dim Principal As BuiltInPrincipal = DirectCast(item.Tag, ActiveDirectory).GetPrincipalByName(item.Text) TaskDialog(Handle, "Built-in principal information", Principal.Name & vbCrLf & Principal.SID, Principal.Description, TASKDIALOG_COMMON_BUTTON_FLAGS.TDCBF_CLOSE_BUTTON, My.Resources.usercpl_1.Handle, 0, True, True) End If End Sub @@ -344,14 +352,10 @@ Public Class Search End Sub Private Sub ListView1_AfterLabelEdit(sender As Object, e As LabelEditEventArgs) Handles list.AfterLabelEdit - If e.Label Is Nothing OrElse e.Label = "" Then - e.CancelEdit = True - Return - End If + e.CancelEdit = True + If e.Label Is Nothing OrElse e.Label = "" Then Return - If Not ADHandler_C.RenameInitiated(list.Items(e.Item).Text, e.Label, list.SelectedItems(0).ImageIndex, list.SelectedItems(0).Tag, Handle) Then - e.CancelEdit = True - Else + If ADHandler_C.RenameInitiated(list.Items(e.Item).Text, e.Label, list.SelectedItems(0).ImageIndex, list.SelectedItems(0).Tag, Handle) Then SearchConditionsChanged(Nothing, Nothing) End If End Sub @@ -363,7 +367,11 @@ Public Class Search Private Sub cCopySID_Click(sender As Object, e As EventArgs) Handles cCopySID.Click If list.SelectedItems.Count <> 1 OrElse list.SelectedItems(0).ImageIndex <> 2 Then Return - Clipboard.SetText(mainF.ADHandler.currentAD().GetPrincipalByName(list.SelectedItems(0).Text).SID) + Clipboard.SetText(DirectCast(list.SelectedItems(0).Tag, ActiveDirectory).GetPrincipalByName(list.SelectedItems(0).Text).SID) + End Sub + + Private Sub UpdateAutoRefreshCheckBox(sender As Object, e As EventArgs) Handles SRangeCurrent.CheckedChanged + NoAutoRefresh.Enabled = SRangeCurrent.Checked End Sub Private Sub cDelete_Click(sender As Object, e As EventArgs) Handles cDelete.Click diff --git a/lusrmgr/src/Dialogs/ViewSettings.vb b/lusrmgr/src/Dialogs/ViewSettings.vb index 62c5412..e890487 100644 --- a/lusrmgr/src/Dialogs/ViewSettings.vb +++ b/lusrmgr/src/Dialogs/ViewSettings.vb @@ -78,7 +78,7 @@ Private Sub Reset_Click(sender As Object, e As EventArgs) Handles Reset.Click mTop.Checked = True - showcommandbar.Checked = False + showcommandbar.Checked = True showstausbar.Checked = True QS.SelectedIndex = 0 diff --git a/lusrmgr/src/Extensions/ActiveDsEx.vb b/lusrmgr/src/Extensions/ActiveDsEx.vb index 4152fb9..e11c9e4 100644 --- a/lusrmgr/src/Extensions/ActiveDsEx.vb +++ b/lusrmgr/src/Extensions/ActiveDsEx.vb @@ -26,7 +26,11 @@ Module DsEntryEx ''' Function IADsU(u As DsEntry) As ActiveDs.IADsUser - Return u.NativeObject + If u IsNot Nothing Then + Return u.NativeObject + Else + Return Nothing + End If End Function '''

@@ -38,7 +42,11 @@ Module DsEntryEx ''' Function IADsG(g As DsEntry) As ActiveDs.IADsGroup - Return g.NativeObject + If g IsNot Nothing Then + Return g.NativeObject + Else + Return Nothing + End If End Function @@ -87,7 +95,7 @@ Module DsEntryEx Marshal.FreeHGlobal(pSID) Return strSID Else - TaskDialog(IntPtr.Zero, "An unknown error occurred", "Error whilst processing SID", "An error occurred whilst converting a SID to a String object." & vbCrLf & "Please report this issue to the developer.", TASKDIALOG_COMMON_BUTTON_FLAGS.TDCBF_OK_BUTTON, TD_ERROR_ICON, Nothing) + TaskDialog(IntPtr.Zero, "An unknown error occurred", "Error whilst processing SID", "An error occurred whilst converting a SID to a String object.", TASKDIALOG_COMMON_BUTTON_FLAGS.TDCBF_OK_BUTTON, TD_ERROR_ICON, Nothing) Return strErr End If End Function diff --git a/lusrmgr/src/Extensions/ControlsEx.vb b/lusrmgr/src/Extensions/ControlsEx.vb index 1e47c05..118f883 100644 --- a/lusrmgr/src/Extensions/ControlsEx.vb +++ b/lusrmgr/src/Extensions/ControlsEx.vb @@ -8,6 +8,21 @@ End Sub End Module +Public Class TransparentPanel + Inherits Panel + + Protected Overrides Sub OnPaintBackground(pevent As PaintEventArgs) + End Sub + + Protected Overrides ReadOnly Property CreateParams As CreateParams + Get + Dim params As CreateParams = MyBase.CreateParams + params.ExStyle = params.ExStyle Or &H20 'WS_EX_TRANSPARENT + Return params + End Get + End Property +End Class + Public Class TreeView Inherits System.Windows.Forms.TreeView diff --git a/lusrmgr/src/Form1.Designer.vb b/lusrmgr/src/Form1.Designer.vb new file mode 100644 index 0000000..6eb6880 --- /dev/null +++ b/lusrmgr/src/Form1.Designer.vb @@ -0,0 +1,29 @@ + _ +Partial Class Form1 + Inherits System.Windows.Forms.Form + + 'Das Formular überschreibt den Löschvorgang, um die Komponentenliste zu bereinigen. + _ + Protected Overrides Sub Dispose(ByVal disposing As Boolean) + Try + If disposing AndAlso components IsNot Nothing Then + components.Dispose() + End If + Finally + MyBase.Dispose(disposing) + End Try + End Sub + + 'Wird vom Windows Form-Designer benötigt. + Private components As System.ComponentModel.IContainer + + 'Hinweis: Die folgende Prozedur ist für den Windows Form-Designer erforderlich. + 'Das Bearbeiten ist mit dem Windows Form-Designer möglich. + 'Das Bearbeiten mit dem Code-Editor ist nicht möglich. + _ + Private Sub InitializeComponent() + components = New System.ComponentModel.Container + Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font + Me.Text = "Form1" + End Sub +End Class diff --git a/lusrmgr/src/Form1.resx b/lusrmgr/src/Form1.resx new file mode 100644 index 0000000..29dcb1b --- /dev/null +++ b/lusrmgr/src/Form1.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/lusrmgr/src/Form1.vb b/lusrmgr/src/Form1.vb new file mode 100644 index 0000000..d747fbc --- /dev/null +++ b/lusrmgr/src/Form1.vb @@ -0,0 +1,3 @@ +Public Class Form1 + +End Class \ No newline at end of file diff --git a/lusrmgr/src/Handlers/ADHandler.vb b/lusrmgr/src/Handlers/ADHandler.vb index c7196f6..e5c5dd5 100644 --- a/lusrmgr/src/Handlers/ADHandler.vb +++ b/lusrmgr/src/Handlers/ADHandler.vb @@ -3,6 +3,7 @@ Imports System.Runtime.InteropServices Class ADHandler_C Private mainF As MainForm + Private _currentAD As ActiveDirectory Public Sub New(mainForm As MainForm) mainF = mainForm @@ -12,42 +13,45 @@ Class ADHandler_C Return mainF.tw.Nodes.Count <> 1 End Function - Public ReadOnly Property localAD As ActiveDirectory + Public Property localAD As ActiveDirectory Get Return mainF.tw.Nodes(0).Tag End Get + Private Set(value As ActiveDirectory) + mainF.tw.Nodes(0).Tag = value 'The tag values of the TreeView map to their corresponding AD objects + End Set End Property - ''' - ''' Returns the currently selected AD object. - ''' - ''' - ''' - Public Function currentAD() As ActiveDirectory + Public ReadOnly Property currentAD As ActiveDirectory + Get + Return _currentAD + End Get + End Property + + Public Event CurrentADChanged() + + Public Sub UpdateCurrentAD() If mainF.ViewHandler.GetView() = ViewHandler_C.View.MachineRoot Then - Return mainF.tw.SelectedNode.Tag + If _currentAD IsNot mainF.tw.SelectedNode.Tag Then + _currentAD = mainF.tw.SelectedNode.Tag + RaiseEvent CurrentADChanged() + End If Else - Return mainF.tw.SelectedNode.Parent.Tag + If _currentAD IsNot mainF.tw.SelectedNode.Parent.Tag Then + _currentAD = mainF.tw.SelectedNode.Parent.Tag + RaiseEvent CurrentADChanged() + End If End If - End Function - - ''' - ''' Returns an AD by its index in the TreeView. - ''' - ''' - ''' - ''' - Public Function getAD(index As Integer) - Return mainF.tw.Nodes(index).Tag - End Function + End Sub - Public Async Function initLocalAD() As Task + Public Async Function InitLocalAD() As Task Try Dim ComputerName As String = Environment.MachineName If ComputerName = Nothing Then ComputerName = "Local Computer" mainF.tw.Nodes(0).Text = ComputerName & " (loading)" - 'The tag values of the TreeView map to their corresponding AD objects - mainF.tw.Nodes(0).Tag = New ActiveDirectory(mainF) + + _currentAD = New ActiveDirectory(mainF) + localAD = _currentAD While localAD.IsLoading() Await Task.Delay(10) @@ -68,6 +72,18 @@ Class ADHandler_C Catch ex As Exception ShowUnknownErr(mainF.Handle, ex.Message) End Try + + RaiseEvent CurrentADChanged() + End Function + + ''' + ''' Returns an AD by its index in the TreeView. + ''' + ''' + ''' + ''' + Public Function getAD(index As Integer) + Return mainF.tw.Nodes(index).Tag End Function Enum ObjectType diff --git a/lusrmgr/src/Handlers/QuickSearch.vb b/lusrmgr/src/Handlers/QuickSearch.vb index 72382c5..d5d7180 100644 --- a/lusrmgr/src/Handlers/QuickSearch.vb +++ b/lusrmgr/src/Handlers/QuickSearch.vb @@ -29,14 +29,14 @@ If searchTerm.Length = 0 Then If Not mainF.ViewHandler.GetView() = ViewHandler_C.View.MachineRoot Then - 'Only a refreshItemCount() is needed here, since the sorting is handled automatically for the user and group views + 'Only a refreshItemCount() is needed here, since the sorting is handled automatically for the other views mainF.ViewHandler.RefreshItemCount() Else - If Not mainF.ADHandler.currentAD().IsLoading() Then + If Not mainF.ADHandler.currentAD.IsLoading() Then mainF.list.Items.Clear() mainF.list.Items.Add("Users", 0) mainF.list.Items.Add("Groups", 1) - If mainF.ADHandler.currentAD().BuiltInPrincipals.Count > 0 Then + If mainF.ADHandler.currentAD.BuiltInPrincipals.Count > 0 Then mainF.list.Items.Add("Built-in security principals", 5) End If End If diff --git a/lusrmgr/src/Handlers/ViewHandler.vb b/lusrmgr/src/Handlers/ViewHandler.vb index eec36e9..199b6ab 100644 --- a/lusrmgr/src/Handlers/ViewHandler.vb +++ b/lusrmgr/src/Handlers/ViewHandler.vb @@ -3,6 +3,7 @@ Public Sub New(mainForm As MainForm) mainF = mainForm + AddHandler mainF.ADHandler.CurrentADChanged, AddressOf RefreshWarnings End Sub Private currentView As View @@ -75,8 +76,8 @@ #Region "Status bar warnings" - Private Sub RefreshWarnings() - Dim Warnings As List(Of ADWarning) = mainF.ADHandler.currentAD().Warnings + Public Sub RefreshWarnings() + Dim Warnings As List(Of ADWarning) = mainF.ADHandler.currentAD.Warnings mainF.WarningIndicator.DropDownItems.Clear() Select Case Warnings.Count @@ -129,6 +130,7 @@ mainF.list.ListViewItemSorter = Nothing mainF.list.Items.Clear() mainF.QuickSearch.ClearQuickSearch(True) + mainF.ADHandler.UpdateCurrentAD() Select Case newView Case View.Users @@ -138,7 +140,7 @@ mainF.list.Columns(0).Width = mainF.list.Width - mainF.list.Columns(1).Width mainF.list.Columns(1).Text = "Full name" - For Each User In mainF.ADHandler.currentAD().UserList + For Each User In mainF.ADHandler.currentAD.UserList mainF.list.Items.Add(New ListViewItem({User.Key, User.Value}, 0)).Name = User.Key Next @@ -150,7 +152,7 @@ mainF.list.Sorting = SortOrder.Ascending - For Each Group As String In mainF.ADHandler.currentAD().GroupList + For Each Group As String In mainF.ADHandler.currentAD.GroupList mainF.list.Items.Add(Group, Group, 1) Next @@ -170,7 +172,7 @@ mainF.list.Sorting = SortOrder.Ascending mainF.list.ListViewItemSorter = New ListViewSIDSorter - For Each Principal As BuiltInPrincipal In mainF.ADHandler.currentAD().BuiltInPrincipals + For Each Principal As BuiltInPrincipal In mainF.ADHandler.currentAD.BuiltInPrincipals mainF.list.Items.Add(New ListViewItem({Principal.Name, Principal.SID}, 1)).Name = Principal.Name Next @@ -181,10 +183,10 @@ mainF.list.MultiSelect = False mainF.list.Sorting = SortOrder.None - If mainF.ADHandler.currentAD() IsNot Nothing AndAlso Not mainF.ADHandler.currentAD().IsLoading() Then + If mainF.ADHandler.currentAD IsNot Nothing AndAlso Not mainF.ADHandler.currentAD.IsLoading() Then mainF.list.Items.Add("Users", 0) mainF.list.Items.Add("Groups", 1) - If mainF.ADHandler.currentAD().BuiltInPrincipals.Count > 0 Then + If mainF.ADHandler.currentAD.BuiltInPrincipals.Count > 0 Then mainF.list.Items.Add("Built-in security principals", 5) End If mainF.PropertyHandler.CanCreateNew = True @@ -197,7 +199,6 @@ HideItemCounters() End Select - RefreshWarnings() mainF.MenuHandler.UpdateMenuControls() End Sub diff --git a/lusrmgr/src/HelperModules/COMErr.vb b/lusrmgr/src/HelperModules/COMErr.vb index e21e488..984b833 100644 --- a/lusrmgr/src/HelperModules/COMErr.vb +++ b/lusrmgr/src/HelperModules/COMErr.vb @@ -45,20 +45,17 @@ Module COMErr TaskDialogIndirect(tdc, 0, 0, 0) End Sub - Sub ShowPermissionDeniedErr(parentWnd As IntPtr) - TaskDialog(parentWnd, "Local users and groups", "Access denied", "You are not allowed to perform this operation." & vbCrLf & "Please contact your system administrator or run this program with enough privileges.", TASKDIALOG_COMMON_BUTTON_FLAGS.TDCBF_OK_BUTTON, TASKDIALOG_ICONS.TD_ERROR_ICON, 0, True) - End Sub - - Sub ShowUnknownErr(parentWnd As IntPtr, exMsg As String, Optional additional As String = "") - - Dim body As String = "" - - If additional = "" Then - body = exMsg.Replace(vbCrLf, "") & vbCrLf & "Please report this issue to the developer." + Sub ShowPermissionDeniedErr(parentWnd As IntPtr, isConnectedAD As Boolean) + If isConnectedAD Then + TaskDialog(parentWnd, "Local users and groups", "Access denied", "You are not allowed to perform this operation." & vbCrLf & "Please ensure the account you used to connect has sufficient privileges.", TASKDIALOG_COMMON_BUTTON_FLAGS.TDCBF_OK_BUTTON, TASKDIALOG_ICONS.TD_ERROR_ICON, 0, True) Else - body = exMsg.Replace(vbCrLf, "") & vbCrLf & additional & vbCrLf & "Please report this issue to the developer." + TaskDialog(parentWnd, "Local users and groups", "Access denied", "You are not allowed to perform this operation." & vbCrLf & "Please contact your system administrator or run this application with enough privileges.", TASKDIALOG_COMMON_BUTTON_FLAGS.TDCBF_OK_BUTTON, TASKDIALOG_ICONS.TD_ERROR_ICON, 0, True) End If + End Sub + Sub ShowUnknownErr(parentWnd As IntPtr, exMsg As String, Optional additional As String = "") + Dim body As String = exMsg.Replace(vbCrLf, "") + If additional <> "" Then body &= vbCrLf & additional TaskDialog(parentWnd, "Local users and groups", "An unkown error occurred", body, TASKDIALOG_COMMON_BUTTON_FLAGS.TDCBF_OK_BUTTON, TD_ERROR_ICON, Nothing, True) End Sub @@ -82,7 +79,7 @@ Module COMErr tdc.pszWindowTitle = "Local users and groups" tdc.pszMainInstruction = "An unkown error occurred" - tdc.pszContent = exMsg.Replace(vbCrLf, "") & vbCrLf & vbCrLf & "Error code: 0x" & Hex(errCode) & vbCrLf & "Please report this issue to the developer." + tdc.pszContent = exMsg.Replace(vbCrLf, "") & vbCrLf & vbCrLf & "Error code: 0x" & Hex(errCode) TaskDialogIndirect(tdc, result, 0, 0) @@ -103,31 +100,31 @@ Module COMErr Select Case errCode Case COMErrorCodes.USER_ALREADY_EXISTS - TaskDialog(parentWnd, "Local users and groups", "Account already exists", "There is already an account with the same name. Please choose a different name.", TASKDIALOG_COMMON_BUTTON_FLAGS.TDCBF_OK_BUTTON, TASKDIALOG_ICONS.TD_ERROR_ICON, 0) + TaskDialog(parentWnd, "Local users and groups", "Account already exists", "There is already an account with the same name. Please choose a different name.", TASKDIALOG_COMMON_BUTTON_FLAGS.TDCBF_OK_BUTTON, TASKDIALOG_ICONS.TD_ERROR_ICON, 0, True) Return False Case COMErrorCodes.GROUP_ALREADY_EXISTS - TaskDialog(parentWnd, "Local users and groups", "Group already exists", "There is already a group associated with that name. Please choose a different name.", TASKDIALOG_COMMON_BUTTON_FLAGS.TDCBF_OK_BUTTON, TASKDIALOG_ICONS.TD_ERROR_ICON, 0) + TaskDialog(parentWnd, "Local users and groups", "Group already exists", "There is already a group associated with that name. Please choose a different name.", TASKDIALOG_COMMON_BUTTON_FLAGS.TDCBF_OK_BUTTON, TASKDIALOG_ICONS.TD_ERROR_ICON, 0, True) Return False Case COMErrorCodes.PW_POLICY - TaskDialog(parentWnd, "Account password", "Password could not be changed", "The password you entered does not meet the password policy requirements. Check the minimum password length, password complexity and password history requirements.", TASKDIALOG_COMMON_BUTTON_FLAGS.TDCBF_OK_BUTTON, TASKDIALOG_ICONS.TD_ERROR_ICON, 0) + TaskDialog(parentWnd, "Account password", "Password could not be changed", "The password you entered does not meet the password policy requirements. Check the minimum password length, password complexity and password history requirements.", TASKDIALOG_COMMON_BUTTON_FLAGS.TDCBF_OK_BUTTON, TASKDIALOG_ICONS.TD_ERROR_ICON, 0, True) Return False Case COMErrorCodes.ADMIN_DEACTIVATION - TaskDialog(parentWnd, "Local users and groups", "Operation disallowed", exMsg.Replace(vbCrLf, ""), TASKDIALOG_COMMON_BUTTON_FLAGS.TDCBF_OK_BUTTON, TASKDIALOG_ICONS.TD_ERROR_ICON, 0) + TaskDialog(parentWnd, "Local users and groups", "Operation disallowed", exMsg.Replace(vbCrLf, ""), TASKDIALOG_COMMON_BUTTON_FLAGS.TDCBF_OK_BUTTON, TASKDIALOG_ICONS.TD_ERROR_ICON, 0, True) Return False Case COMErrorCodes.ILLEGAL_USERNAME - TaskDialog(parentWnd, "Local users and groups", "Username could not be changed", "The specified username is invalid. Please use a different name.", TASKDIALOG_COMMON_BUTTON_FLAGS.TDCBF_OK_BUTTON, TASKDIALOG_ICONS.TD_ERROR_ICON, 0) + TaskDialog(parentWnd, "Local users and groups", "Username could not be changed", "The specified username is invalid. Please use a different name.", TASKDIALOG_COMMON_BUTTON_FLAGS.TDCBF_OK_BUTTON, TASKDIALOG_ICONS.TD_ERROR_ICON, 0, True) Return False Case COMErrorCodes.BLOCKED_BUILTIN - TaskDialog(parentWnd, "Local users and groups", "Operation cannot be performed", "Cannot perform this operation on built-in accounts.", TASKDIALOG_COMMON_BUTTON_FLAGS.TDCBF_OK_BUTTON, TASKDIALOG_ICONS.TD_ERROR_ICON, 0) + TaskDialog(parentWnd, "Local users and groups", "Operation cannot be performed", "Cannot perform this operation on built-in accounts.", TASKDIALOG_COMMON_BUTTON_FLAGS.TDCBF_OK_BUTTON, TASKDIALOG_ICONS.TD_ERROR_ICON, 0, True) Return False Case COMErrorCodes.USER_ALREADY_IN_GROUP - TaskDialog(parentWnd, "Local users and groups", "User is already member of group", "The user """ & w & """ is already member of the target group and therefore cannot be added.", TASKDIALOG_COMMON_BUTTON_FLAGS.TDCBF_OK_BUTTON, TASKDIALOG_ICONS.TD_ERROR_ICON, 0) + TaskDialog(parentWnd, "Local users and groups", "User is already member of group", "The user """ & w & """ is already member of the target group and therefore cannot be added.", TASKDIALOG_COMMON_BUTTON_FLAGS.TDCBF_OK_BUTTON, TASKDIALOG_ICONS.TD_ERROR_ICON, 0, True) Return COMErrResult.LOOP_CONTINUE Case COMErrorCodes.USER_NOT_IN_GROUP - TaskDialog(parentWnd, "Local users and groups", "User is not a member of group", "The user """ & w & """ is not a member of the target group and therefore cannot be removed.", TASKDIALOG_COMMON_BUTTON_FLAGS.TDCBF_OK_BUTTON, TASKDIALOG_ICONS.TD_ERROR_ICON, 0) + TaskDialog(parentWnd, "Local users and groups", "User is not a member of group", "The user """ & w & """ is not a member of the target group and therefore cannot be removed.", TASKDIALOG_COMMON_BUTTON_FLAGS.TDCBF_OK_BUTTON, TASKDIALOG_ICONS.TD_ERROR_ICON, 0, True) Return COMErrResult.LOOP_CONTINUE Case COMErrorCodes.RPC_CONNECTION_UNAVAILALBE - TaskDialog(parentWnd, "Local users and groups", "Connection unavailable", "The remote procedure call failed. Please check your connection and try again.", TASKDIALOG_COMMON_BUTTON_FLAGS.TDCBF_OK_BUTTON, TD_ERROR_ICON, 0) + TaskDialog(parentWnd, "Local users and groups", "Connection unavailable", "The remote procedure call failed. Please check your connection and try again.", TASKDIALOG_COMMON_BUTTON_FLAGS.TDCBF_OK_BUTTON, TD_ERROR_ICON, 0, True) Return False Case COMErrorCodes.ACCOUNT_INEXISTENT Dim result As Integer diff --git a/lusrmgr/src/HelperModules/Config.vb b/lusrmgr/src/HelperModules/Config.vb index 455298c..b476912 100644 --- a/lusrmgr/src/HelperModules/Config.vb +++ b/lusrmgr/src/HelperModules/Config.vb @@ -26,7 +26,7 @@ Module Config TaskDialog(errWindow, "Configuration error", "Access to registry denied", "The configuration values could not be modified, the access was denied." & vbCrLf & "Please contact your system administrator or run this program with enough privileges.", TASKDIALOG_COMMON_BUTTON_FLAGS.TDCBF_OK_BUTTON, TD_ERROR_ICON, Nothing) Return False Catch ex As Exception - TaskDialog(errWindow, "An unkown error occurred", "A value could not be written to the registry", ex.Message & vbCrLf & "Please report this issue to the developer.", TASKDIALOG_COMMON_BUTTON_FLAGS.TDCBF_OK_BUTTON, TASKDIALOG_ICONS.TD_ERROR_ICON, 0) + TaskDialog(errWindow, "An unkown error occurred", "A value could not be written to the registry", ex.Message, TASKDIALOG_COMMON_BUTTON_FLAGS.TDCBF_OK_BUTTON, TASKDIALOG_ICONS.TD_ERROR_ICON, 0) Return False End Try Return True @@ -36,7 +36,7 @@ Module Config Try Return configKey.GetValue(setting, def) Catch ex As Exception - TaskDialog(IntPtr.Zero, "An unkown error occurred", "A value could not be read from the registry", ex.Message & vbCrLf & "Please report this issue to the developer.", TASKDIALOG_COMMON_BUTTON_FLAGS.TDCBF_OK_BUTTON, TASKDIALOG_ICONS.TD_ERROR_ICON, 0) + TaskDialog(IntPtr.Zero, "An unkown error occurred", "A value could not be read from the registry", ex.Message, TASKDIALOG_COMMON_BUTTON_FLAGS.TDCBF_OK_BUTTON, TASKDIALOG_ICONS.TD_ERROR_ICON, 0) Return Nothing End Try End Function @@ -46,7 +46,7 @@ Module Config Try Return configKey.GetValue(setting, def) Catch ex As Exception - TaskDialog(parentWnd.Handle, "An unkown error occurred", "A value could not be read from the registry", ex.Message & vbCrLf & "Please report this issue to the developer.", TASKDIALOG_COMMON_BUTTON_FLAGS.TDCBF_OK_BUTTON, TASKDIALOG_ICONS.TD_ERROR_ICON, 0) + TaskDialog(parentWnd.Handle, "An unkown error occurred", "A value could not be read from the registry", ex.Message, TASKDIALOG_COMMON_BUTTON_FLAGS.TDCBF_OK_BUTTON, TASKDIALOG_ICONS.TD_ERROR_ICON, 0) Return False End Try End Function @@ -56,7 +56,7 @@ Module Config Try Return configKey.GetValue(setting, def) Catch ex As Exception - TaskDialog(parentWnd.Handle, "An unkown error occurred", "A value could not be read from the registry", ex.Message & vbCrLf & "Please report this issue to the developer.", TASKDIALOG_COMMON_BUTTON_FLAGS.TDCBF_OK_BUTTON, TASKDIALOG_ICONS.TD_ERROR_ICON, 0) + TaskDialog(parentWnd.Handle, "An unkown error occurred", "A value could not be read from the registry", ex.Message, TASKDIALOG_COMMON_BUTTON_FLAGS.TDCBF_OK_BUTTON, TASKDIALOG_ICONS.TD_ERROR_ICON, 0) Return 0 End Try End Function @@ -65,7 +65,7 @@ Module Config Try Return configKey.GetValue(setting, def) Catch ex As Exception - TaskDialog(IntPtr.Zero, "An unkown error occurred", "A value could not be read from the registry", ex.Message & vbCrLf & "Please report this issue to the developer.", TASKDIALOG_COMMON_BUTTON_FLAGS.TDCBF_OK_BUTTON, TASKDIALOG_ICONS.TD_ERROR_ICON, 0) + TaskDialog(IntPtr.Zero, "An unkown error occurred", "A value could not be read from the registry", ex.Message, TASKDIALOG_COMMON_BUTTON_FLAGS.TDCBF_OK_BUTTON, TASKDIALOG_ICONS.TD_ERROR_ICON, 0) Return 0 End Try End Function diff --git a/lusrmgr/src/Interop/TaskDialog.vb b/lusrmgr/src/Interop/TaskDialog.vb index 6370ee5..c1e3e0e 100644 --- a/lusrmgr/src/Interop/TaskDialog.vb +++ b/lusrmgr/src/Interop/TaskDialog.vb @@ -39,7 +39,7 @@ Module TASKDIALOG_ Try TaskDialogIndirect(tdc, pnButton, a, b) Catch ex As Exception - MessageBox.Show("An error occurred whilst trying to show a TaskDialog. Falling back to MessageBox function." & vbCrLf & ex.Message & vbCrLf & "HRESULT: " & ex.HResult & vbCrLf & "Please report this issue to the developer.", "Error on TaskDialog", MessageBoxButtons.OK, MessageBoxIcon.Error) + MessageBox.Show("An error occurred whilst trying to show a TaskDialog. Falling back to MessageBox function." & vbCrLf & ex.Message & vbCrLf & "HRESULT: " & ex.HResult, "Error on TaskDialog", MessageBoxButtons.OK, MessageBoxIcon.Error) MessageBox.Show(pszContent, pszMainInstruction, MessageBoxButtons.OK, MessageBoxIcon.Error) End Try End Sub diff --git a/lusrmgr/src/MainForm.Designer.vb b/lusrmgr/src/MainForm.Designer.vb index 4d12592..812aae7 100644 --- a/lusrmgr/src/MainForm.Designer.vb +++ b/lusrmgr/src/MainForm.Designer.vb @@ -34,6 +34,10 @@ Partial Class MainForm Me.cCollapse = New System.Windows.Forms.ToolStripMenuItem() Me.Icons = New System.Windows.Forms.ImageList(Me.components) Me.SplitContainer1 = New System.Windows.Forms.SplitContainer() + Me.tw = New lusrmgr.TreeView() + Me.list = New lusrmgr.ListView() + Me.ColumnHeader1 = CType(New System.Windows.Forms.ColumnHeader(), System.Windows.Forms.ColumnHeader) + Me.ColumnHeader2 = CType(New System.Windows.Forms.ColumnHeader(), System.Windows.Forms.ColumnHeader) Me.ListContextMenu = New System.Windows.Forms.ContextMenuStrip(Me.components) Me.cEdit = New System.Windows.Forms.ToolStripMenuItem() Me.cOpen = New System.Windows.Forms.ToolStripMenuItem() @@ -90,10 +94,6 @@ Partial Class MainForm Me.QSBar = New System.Windows.Forms.ToolStrip() Me.ToolStripLabel2 = New System.Windows.Forms.ToolStripLabel() Me.QSearch = New System.Windows.Forms.ToolStripTextBox() - Me.tw = New lusrmgr.TreeView() - Me.list = New lusrmgr.ListView() - Me.ColumnHeader1 = CType(New System.Windows.Forms.ColumnHeader(), System.Windows.Forms.ColumnHeader) - Me.ColumnHeader2 = CType(New System.Windows.Forms.ColumnHeader(), System.Windows.Forms.ColumnHeader) Me.TwContextMenu.SuspendLayout() CType(Me.SplitContainer1, System.ComponentModel.ISupportInitialize).BeginInit() Me.SplitContainer1.Panel1.SuspendLayout() @@ -186,6 +186,57 @@ Partial Class MainForm Me.SplitContainer1.SplitterDistance = 261 Me.SplitContainer1.TabIndex = 1 ' + 'tw + ' + Me.tw.BackColor = System.Drawing.SystemColors.Window + Me.tw.ContextMenuStrip = Me.TwContextMenu + Me.tw.Dock = System.Windows.Forms.DockStyle.Fill + Me.tw.HideSelection = False + Me.tw.HotTracking = True + Me.tw.ImageIndex = 0 + Me.tw.ImageList = Me.Icons + Me.tw.LabelEdit = True + Me.tw.Location = New System.Drawing.Point(0, 0) + Me.tw.Name = "tw" + TreeNode1.ImageIndex = 4 + TreeNode1.Name = "Knoten0" + TreeNode1.SelectedImageIndex = 4 + TreeNode1.Text = "Local users and groups on" + Me.tw.Nodes.AddRange(New System.Windows.Forms.TreeNode() {TreeNode1}) + Me.tw.SelectedImageIndex = 0 + Me.tw.ShowLines = False + Me.tw.ShowNodeToolTips = True + Me.tw.Size = New System.Drawing.Size(261, 325) + Me.tw.TabIndex = 0 + ' + 'list + ' + Me.list.BackColor = System.Drawing.SystemColors.Window + Me.list.Columns.AddRange(New System.Windows.Forms.ColumnHeader() {Me.ColumnHeader1, Me.ColumnHeader2}) + Me.list.ContextMenuStrip = Me.ListContextMenu + Me.list.Dock = System.Windows.Forms.DockStyle.Fill + Me.list.FullRowSelect = True + Me.list.LabelEdit = True + Me.list.LabelWrap = False + Me.list.Location = New System.Drawing.Point(0, 0) + Me.list.Name = "list" + Me.list.ShowItemToolTips = True + Me.list.Size = New System.Drawing.Size(523, 325) + Me.list.SmallImageList = Me.Icons + Me.list.TabIndex = 0 + Me.list.UseCompatibleStateImageBehavior = False + Me.list.View = System.Windows.Forms.View.Details + ' + 'ColumnHeader1 + ' + Me.ColumnHeader1.Text = "Name" + Me.ColumnHeader1.Width = 519 + ' + 'ColumnHeader2 + ' + Me.ColumnHeader2.Text = "SID" + Me.ColumnHeader2.Width = 0 + ' 'ListContextMenu ' Me.ListContextMenu.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.cEdit, Me.cOpen, Me.cRename, Me.cSetPassword, Me.cCreate, Me.cDelete, Me.cShowBuiltInDetails, Me.cCopyName, Me.cCopySID}) @@ -288,7 +339,8 @@ Partial Class MainForm Me.WarningIndicator.Image = Global.lusrmgr.My.Resources.Resources.Warning Me.WarningIndicator.Name = "WarningIndicator" Me.WarningIndicator.Size = New System.Drawing.Size(101, 20) - Me.WarningIndicator.Text = "1 warning(s)" + Me.WarningIndicator.Text = "0 warning(s)" + Me.WarningIndicator.Visible = False ' 'MenuStrip1 ' @@ -625,57 +677,6 @@ Partial Class MainForm Me.QSearch.Name = "QSearch" Me.QSearch.Size = New System.Drawing.Size(150, 25) ' - 'tw - ' - Me.tw.BackColor = System.Drawing.SystemColors.Window - Me.tw.ContextMenuStrip = Me.TwContextMenu - Me.tw.Dock = System.Windows.Forms.DockStyle.Fill - Me.tw.HideSelection = False - Me.tw.HotTracking = True - Me.tw.ImageIndex = 0 - Me.tw.ImageList = Me.Icons - Me.tw.LabelEdit = True - Me.tw.Location = New System.Drawing.Point(0, 0) - Me.tw.Name = "tw" - TreeNode1.ImageIndex = 4 - TreeNode1.Name = "Knoten0" - TreeNode1.SelectedImageIndex = 4 - TreeNode1.Text = "Local users and groups on" - Me.tw.Nodes.AddRange(New System.Windows.Forms.TreeNode() {TreeNode1}) - Me.tw.SelectedImageIndex = 0 - Me.tw.ShowLines = False - Me.tw.ShowNodeToolTips = True - Me.tw.Size = New System.Drawing.Size(261, 325) - Me.tw.TabIndex = 0 - ' - 'list - ' - Me.list.BackColor = System.Drawing.SystemColors.Window - Me.list.Columns.AddRange(New System.Windows.Forms.ColumnHeader() {Me.ColumnHeader1, Me.ColumnHeader2}) - Me.list.ContextMenuStrip = Me.ListContextMenu - Me.list.Dock = System.Windows.Forms.DockStyle.Fill - Me.list.FullRowSelect = True - Me.list.LabelEdit = True - Me.list.LabelWrap = False - Me.list.Location = New System.Drawing.Point(0, 0) - Me.list.Name = "list" - Me.list.ShowItemToolTips = True - Me.list.Size = New System.Drawing.Size(523, 325) - Me.list.SmallImageList = Me.Icons - Me.list.TabIndex = 0 - Me.list.UseCompatibleStateImageBehavior = False - Me.list.View = System.Windows.Forms.View.Details - ' - 'ColumnHeader1 - ' - Me.ColumnHeader1.Text = "Name" - Me.ColumnHeader1.Width = 519 - ' - 'ColumnHeader2 - ' - Me.ColumnHeader2.Text = "SID" - Me.ColumnHeader2.Width = 0 - ' 'MainForm ' Me.AutoScaleDimensions = New System.Drawing.SizeF(7!, 15!) diff --git a/lusrmgr/src/MainForm.resx b/lusrmgr/src/MainForm.resx index 4906e2e..64d4cc0 100644 --- a/lusrmgr/src/MainForm.resx +++ b/lusrmgr/src/MainForm.resx @@ -128,7 +128,7 @@ AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAABm - JQAAAk1TRnQBSQFMAgEBBgEAAZgBEAGYARABEwEAARMBAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAFM + JQAAAk1TRnQBSQFMAgEBBgEAAbgBEAG4ARABEwEAARMBAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAFM AwABJgMAAQEBAAEgBQABIAEtHgADBwEKAUcCSAGDA1sByAFYAmIB6QJZAWcB8gJCAVkB9QJMAV8B8wJZ AWQB7AJbAWAB1gNQAZoDIAEuMwABAQMAAQEDAAEBAwABAQsAAQG0AAMXASABWgFfAWAB3gEAAasB4QH/ AQABuAHmAf8CAAHGAf8CAAGoAf8CAAGNAf8DAAH/AwAB/wIAAYAB/wIAAYQB/wJYAWIB7wM3AVsDBwEJ diff --git a/lusrmgr/src/MainForm.vb b/lusrmgr/src/MainForm.vb index d29f342..afdabdd 100644 --- a/lusrmgr/src/MainForm.vb +++ b/lusrmgr/src/MainForm.vb @@ -2,8 +2,8 @@ Imports DsEntry = System.DirectoryServices.DirectoryEntry Public Class MainForm - Friend ViewHandler As New ViewHandler_C(Me) Friend ADHandler As New ADHandler_C(Me) + Friend ViewHandler As New ViewHandler_C(Me) Friend MenuHandler As New MenuHandler_C(Me) Friend QuickSearch As New QuickSearch_C(Me) Friend PropertyHandler As New PropertyHandler_C(Me) @@ -109,7 +109,7 @@ Public Class MainForm Private Async Sub MainFormLoad(sender As Object, e As EventArgs) Handles MyBase.Load MenuHandler.PerformMenuRendering() - Await ADHandler.initLocalAD() + Await ADHandler.InitLocalAD() If tw.SelectedNode Is Nothing Then tw.SelectedNode = tw.Nodes(0) MainTreeView_AfterSelect(Nothing, Nothing) ViewHandler.RefreshSearch() @@ -124,6 +124,7 @@ Public Class MainForm #Region "Main tree events" Private Sub MainTreeView_AfterSelect(sender As Object, e As TreeViewEventArgs) Handles tw.AfterSelect + Select Case tw.SelectedNode.ImageIndex Case 0 ViewHandler.ViewChanged(ViewHandler_C.View.Users) @@ -161,17 +162,16 @@ Public Class MainForm Private Sub tw_BeforeLabelEdit(sender As Object, e As NodeLabelEditEventArgs) Handles tw.BeforeLabelEdit If Not isConnectedAD() OrElse Not ViewHandler.GetView() = ViewHandler_C.View.MachineRoot OrElse ViewHandler.GetView() = ViewHandler_C.View.BuiltInPrincipals Then e.CancelEdit = True - Return End If End Sub Private Sub tw_AfterLabelEdit(sender As Object, e As NodeLabelEditEventArgs) Handles tw.AfterLabelEdit If e.Label Is Nothing Then Return - ADHandler.currentAD().ChangeDisplayName(e.Label) + ADHandler.currentAD.ChangeDisplayName(e.Label) e.CancelEdit = True - e.Node.Text = ADHandler.currentAD().GetDisplayName() + e.Node.Text = ADHandler.currentAD.GetDisplayName() ViewHandler.RefreshSearch() End Sub @@ -187,12 +187,12 @@ Public Class MainForm tw.SelectedNode = tw.SelectedNode.Nodes.Find(list.SelectedItems(0).Text, False)(0) Case ViewHandler_C.View.Users Dim newPropertyWindow As New EditUser - newPropertyWindow.Show(list.SelectedItems(0).Text, ADHandler.currentAD()) + newPropertyWindow.Show(list.SelectedItems(0).Text, ADHandler.currentAD) Case ViewHandler_C.View.Groups Dim newPropertyWindow As New EditGroup - newPropertyWindow.Show(list.SelectedItems(0).Text, ADHandler.currentAD()) + newPropertyWindow.Show(list.SelectedItems(0).Text, ADHandler.currentAD) Case ViewHandler_C.View.BuiltInPrincipals - TaskDialog(Handle, "Built-in principal information", list.SelectedItems(0).Text & vbCrLf & list.SelectedItems(0).SubItems(1).Text, ADHandler.currentAD().GetPrincipalBySID(list.SelectedItems(0).SubItems(1).Text).Description, TASKDIALOG_COMMON_BUTTON_FLAGS.TDCBF_CLOSE_BUTTON, My.Resources.usercpl_1.Handle, 0, True, True) + TaskDialog(Handle, "Built-in principal information", list.SelectedItems(0).Text & vbCrLf & list.SelectedItems(0).SubItems(1).Text, ADHandler.currentAD.GetPrincipalBySID(list.SelectedItems(0).SubItems(1).Text).Description, TASKDIALOG_COMMON_BUTTON_FLAGS.TDCBF_CLOSE_BUTTON, My.Resources.usercpl_1.Handle, 0, True, True) End Select End Sub @@ -206,7 +206,7 @@ Public Class MainForm Return End If - If ADHandler_C.RenameInitiated(list.Items(e.Item).Text, e.Label, If(ViewHandler.GetView() = ViewHandler_C.View.Users, 0, 1), ADHandler.currentAD(), Handle) Then + If ADHandler_C.RenameInitiated(list.Items(e.Item).Text, e.Label, If(ViewHandler.GetView() = ViewHandler_C.View.Users, 0, 1), ADHandler.currentAD, Handle) Then ViewHandler.RefreshItemCount() End If End Sub @@ -290,12 +290,12 @@ Public Class MainForm Private Sub EditUserTS_Click(sender As Object, e As EventArgs) Handles EditUserTS.Click Dim newPropertyWindow As New EditUser - newPropertyWindow.Show(list.SelectedItems(0).Text, ADHandler.currentAD()) + newPropertyWindow.Show(list.SelectedItems(0).Text, ADHandler.currentAD) End Sub Private Sub EditGroupTS_Click(sender As Object, e As EventArgs) Handles EditGroupTS.Click Dim newPropertyWindow As New EditGroup - newPropertyWindow.Show(list.SelectedItems(0).Text, ADHandler.currentAD()) + newPropertyWindow.Show(list.SelectedItems(0).Text, ADHandler.currentAD) End Sub Private Sub cEdit_Click(sender As Object, e As EventArgs) Handles cEdit.Click, tEdit.Click @@ -307,38 +307,38 @@ Public Class MainForm #Region "Create new" Private Sub cCreate_Click(sender As Object, e As EventArgs) Handles cCreate.Click If ViewHandler.GetView() = ViewHandler_C.View.Users Then - OpenAddUser(ADHandler.currentAD()) + OpenAddUser(ADHandler.currentAD) ElseIf ViewHandler.GetView() = ViewHandler_C.View.Groups Then - OpenAddGroup(ADHandler.currentAD()) + OpenAddGroup(ADHandler.currentAD) ElseIf lselc() < 1 Then Return ElseIf list.SelectedItems(0).Text = "Users" Then - OpenAddUser(ADHandler.currentAD()) + OpenAddUser(ADHandler.currentAD) ElseIf list.SelectedItems(0).Text = "Groups" Then - OpenAddGroup(ADHandler.currentAD()) + OpenAddGroup(ADHandler.currentAD) End If End Sub Private Sub tAdd_Click(sender As Object, e As EventArgs) Handles tAdd.Click If ViewHandler.GetView() = ViewHandler_C.View.Users Then - OpenAddUser(ADHandler.currentAD()) + OpenAddUser(ADHandler.currentAD) ElseIf ViewHandler.GetView() = ViewHandler_C.View.Groups Then - OpenAddGroup(ADHandler.currentAD()) + OpenAddGroup(ADHandler.currentAD) End If End Sub Private Sub CreateNewUserTS_Click(sender As Object, e As EventArgs) Handles CreateNewUserTS.Click - OpenAddUser(ADHandler.currentAD()) + OpenAddUser(ADHandler.currentAD) End Sub Private Sub CreateNewGroupTS_Click(sender As Object, e As EventArgs) Handles CreateNewGroupTS.Click - OpenAddGroup(ADHandler.currentAD()) + OpenAddGroup(ADHandler.currentAD) End Sub #End Region #Region "Delete" Private Sub DeleteUserTS_Click(sender As Object, e As EventArgs) Handles DeleteUserTS.Click - Dim AD As ActiveDirectory = ADHandler.currentAD() + Dim AD As ActiveDirectory = ADHandler.currentAD ADHandler.ShowDeleteDialog("user", "users", New ADHandler_C.DeleteAction(Sub(item As ListViewItem) AD.DeleteUser(item.Text, Handle, False) End Sub), list.SelectedItems, Handle) @@ -346,7 +346,7 @@ Public Class MainForm End Sub Private Sub DeleteGroupTS_Click(sender As Object, e As EventArgs) Handles DeleteGroupTS.Click - Dim AD As ActiveDirectory = ADHandler.currentAD() + Dim AD As ActiveDirectory = ADHandler.currentAD ADHandler.ShowDeleteDialog("group", "groups", New ADHandler_C.DeleteAction(Sub(item As ListViewItem) AD.DeleteGroup(item.Text, Handle, False) End Sub), list.SelectedItems, Handle) @@ -363,7 +363,7 @@ Public Class MainForm Private Sub SetPasswordToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles cSetPassword.Click Using pwdlg As New SetPw - Dim cAD As ActiveDirectory = ADHandler.currentAD() + Dim cAD As ActiveDirectory = ADHandler.currentAD Dim user As DsEntry = cAD.FindUser(list.SelectedItems(0).Text, Handle) If user IsNot Nothing Then pwdlg.Show(user, cAD) @@ -378,8 +378,8 @@ Public Class MainForm End Sub Private Sub RefreshTS_Click(sender As Object, e As EventArgs) Handles RefreshTS.Click, tRefresh.Click - If ADHandler.currentAD().IsLoading() = False Then - ADHandler.currentAD().RefreshDS() + If ADHandler.currentAD.IsLoading() = False Then + ADHandler.currentAD.RefreshDS() If Not ViewHandler.GetView() = ViewHandler_C.View.MachineRoot Then ViewHandler.RefreshItemCount() End If End Sub @@ -387,10 +387,11 @@ Public Class MainForm Private Sub RefreshAll_Click(sender As Object, e As EventArgs) Handles RefreshAll.Click For Each node As TreeNode In tw.Nodes Dim AD As ActiveDirectory = node.Tag - If AD.IsLoading() = False Then - AD.RefreshDS() + If AD.IsLoading() = False AndAlso AD IsNot ADHandler.currentAD Then + AD.RefreshDS(True) End If Next + ADHandler.currentAD.RefreshDS() If Not ViewHandler.GetView() = ViewHandler_C.View.MachineRoot Then ViewHandler.RefreshItemCount() End Sub @@ -414,7 +415,7 @@ Public Class MainForm If ADHandler.areADsConnected Then RefreshAll.Visible = True RefreshAll.Text = "Refresh all connected machines" - RefreshTS.Text = "Refresh users and groups on " & ADHandler.currentAD().GetDisplayName() + RefreshTS.Text = "Refresh users and groups on " & ADHandler.currentAD.GetDisplayName() Else RefreshAll.Visible = False RefreshAll.Text = "" @@ -459,6 +460,8 @@ Public Class MainForm loadingWindow.ControlBox = False loadingWindow.SetText("Waiting for authentication") + Dim retry As Boolean = False + Do Dim WNetConnectResult As SystemErrorCodes = Await WNetConnectAsync(addr, Connect.promptAuth.Checked) @@ -473,11 +476,17 @@ Public Class MainForm Continue Do End If loadingWindow.Close() - Return + + If WNetConnectResult = SystemErrorCodes.ERROR_CANCELLED OrElse WNetConnectResult = SystemErrorCodes.ERROR_NOT_CONNECTED Then + Return + Else + retry = True + End If End If Exit Do Loop + If retry Then Continue Do '/////// Connect and initialise AD ///////////////// loadingWindow.ControlBox = True @@ -559,8 +568,7 @@ Public Class MainForm End If Dim result As Integer - TaskDialog(Handle, "Unkown error", "Could not connect to computer", "An unkown error occurred whilst connecting to the computer." & - vbCrLf & ex.Message & vbCrLf & "Please report this issue to the developer.", + TaskDialog(Handle, "Unkown error", "Could not connect to computer", "An unkown error occurred whilst connecting to the computer." & vbCrLf & ex.Message, TASKDIALOG_COMMON_BUTTON_FLAGS.TDCBF_RETRY_BUTTON Or TASKDIALOG_COMMON_BUTTON_FLAGS.TDCBF_CLOSE_BUTTON, TD_ERROR_ICON, result) If result = IDRETRY Then Continue Do diff --git a/lusrmgr/src/PropertyWindows/AddGroup.vb b/lusrmgr/src/PropertyWindows/AddGroup.vb index fad724c..8d14b87 100644 --- a/lusrmgr/src/PropertyWindows/AddGroup.vb +++ b/lusrmgr/src/PropertyWindows/AddGroup.vb @@ -71,7 +71,7 @@ Public Class AddGroup Try newg = AD.CreateGroup(GroupNameTextBox.Text, Comment.Text) Catch ex As UnauthorizedAccessException - ShowPermissionDeniedErr(Handle) + ShowPermissionDeniedErr(Handle, AD.IsRemoteAD()) Return Catch ex As Runtime.InteropServices.COMException ShowCOMErr(ex.ErrorCode, Handle, ex.Message) @@ -88,7 +88,7 @@ Public Class AddGroup newg.IADsG().Add(AD.GetPath(Member.Text, True)) Next Catch ex As UnauthorizedAccessException - ShowPermissionDeniedErr(Handle) + ShowPermissionDeniedErr(Handle, AD.IsRemoteAD()) Return Catch ex As Runtime.InteropServices.COMException If ShowCOMErr(ex.ErrorCode, Handle, ex.Message) = COMErrResult.REFRESH Then @@ -103,7 +103,7 @@ Public Class AddGroup Try newg.CommitChanges() Catch ex As UnauthorizedAccessException - ShowPermissionDeniedErr(Handle) + ShowPermissionDeniedErr(Handle, AD.IsRemoteAD()) Return Catch ex As Runtime.InteropServices.COMException If ShowCOMErr(ex.ErrorCode, Handle, ex.Message) = COMErrResult.REFRESH Then diff --git a/lusrmgr/src/PropertyWindows/AddUser.Designer.vb b/lusrmgr/src/PropertyWindows/AddUser.Designer.vb index b9e1947..38ba993 100644 --- a/lusrmgr/src/PropertyWindows/AddUser.Designer.vb +++ b/lusrmgr/src/PropertyWindows/AddUser.Designer.vb @@ -146,6 +146,8 @@ Partial Class AddUser ' 'Label1 ' + Me.Label1.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _ + Or System.Windows.Forms.AnchorStyles.Left), System.Windows.Forms.AnchorStyles) Me.Label1.AutoSize = True Me.Label1.Location = New System.Drawing.Point(37, 136) Me.Label1.Name = "Label1" @@ -162,6 +164,8 @@ Partial Class AddUser ' 'Comment ' + Me.Comment.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _ + Or System.Windows.Forms.AnchorStyles.Left), System.Windows.Forms.AnchorStyles) Me.Comment.Location = New System.Drawing.Point(110, 136) Me.Comment.Multiline = True Me.Comment.Name = "Comment" @@ -195,6 +199,9 @@ Partial Class AddUser ' 'FlowLayoutPanel1 ' + Me.FlowLayoutPanel1.Anchor = CType((((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _ + Or System.Windows.Forms.AnchorStyles.Left) _ + Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.FlowLayoutPanel1.AutoScroll = True Me.FlowLayoutPanel1.Controls.Add(Me.GroupBox8) Me.FlowLayoutPanel1.Controls.Add(Me.GroupBox3) @@ -441,7 +448,7 @@ Partial Class AddUser Me.GroupBox7.Controls.Add(Me.GroupMembership) Me.GroupBox7.Location = New System.Drawing.Point(3, 521) Me.GroupBox7.Name = "GroupBox7" - Me.GroupBox7.Size = New System.Drawing.Size(383, 240) + Me.GroupBox7.Size = New System.Drawing.Size(383, 299) Me.GroupBox7.TabIndex = 11 Me.GroupBox7.TabStop = False Me.GroupBox7.Text = "Group membership" @@ -451,31 +458,31 @@ Partial Class AddUser Me.RmGroup.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Center Me.RmGroup.Enabled = False Me.RmGroup.FlatStyle = System.Windows.Forms.FlatStyle.System - Me.RmGroup.Location = New System.Drawing.Point(198, 199) + Me.RmGroup.Location = New System.Drawing.Point(197, 259) Me.RmGroup.Name = "RmGroup" Me.RmGroup.Size = New System.Drawing.Size(172, 27) Me.RmGroup.TabIndex = 27 - Me.RmGroup.Text = "Remove membership" + Me.RmGroup.Text = "Remove from group" Me.RmGroup.UseVisualStyleBackColor = True ' 'AddToGrpBtn ' Me.AddToGrpBtn.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Center Me.AddToGrpBtn.FlatStyle = System.Windows.Forms.FlatStyle.System - Me.AddToGrpBtn.Location = New System.Drawing.Point(19, 199) + Me.AddToGrpBtn.Location = New System.Drawing.Point(14, 259) Me.AddToGrpBtn.Name = "AddToGrpBtn" Me.AddToGrpBtn.Size = New System.Drawing.Size(172, 27) Me.AddToGrpBtn.TabIndex = 26 - Me.AddToGrpBtn.Text = "Add membership..." + Me.AddToGrpBtn.Text = "Add to group..." Me.AddToGrpBtn.UseVisualStyleBackColor = True ' 'GroupMembership ' Me.GroupMembership.Columns.AddRange(New System.Windows.Forms.ColumnHeader() {Me.ColumnHeader3}) - Me.GroupMembership.Location = New System.Drawing.Point(19, 29) + Me.GroupMembership.Location = New System.Drawing.Point(15, 29) Me.GroupMembership.Name = "GroupMembership" Me.GroupMembership.ShowItemToolTips = True - Me.GroupMembership.Size = New System.Drawing.Size(351, 160) + Me.GroupMembership.Size = New System.Drawing.Size(354, 219) Me.GroupMembership.Sorting = System.Windows.Forms.SortOrder.Ascending Me.GroupMembership.TabIndex = 25 Me.GroupMembership.UseCompatibleStateImageBehavior = False @@ -484,14 +491,15 @@ Partial Class AddUser 'ColumnHeader3 ' Me.ColumnHeader3.Text = "Groups" - Me.ColumnHeader3.Width = 348 + Me.ColumnHeader3.Width = 350 ' 'warnImg ' - Me.warnImg.Image = Global.lusrmgr.My.Resources.Resources.Shield - Me.warnImg.Location = New System.Drawing.Point(199, 322) + Me.warnImg.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left), System.Windows.Forms.AnchorStyles) + Me.warnImg.Image = Global.lusrmgr.My.Resources.Resources.Warning + Me.warnImg.Location = New System.Drawing.Point(199, 327) Me.warnImg.Name = "warnImg" - Me.warnImg.Size = New System.Drawing.Size(28, 27) + Me.warnImg.Size = New System.Drawing.Size(16, 16) Me.warnImg.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize Me.warnImg.TabIndex = 124 Me.warnImg.TabStop = False @@ -499,6 +507,7 @@ Partial Class AddUser ' 'PwNotRequired ' + Me.PwNotRequired.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left), System.Windows.Forms.AnchorStyles) Me.PwNotRequired.AutoSize = True Me.PwNotRequired.FlatStyle = System.Windows.Forms.FlatStyle.System Me.PwNotRequired.Location = New System.Drawing.Point(17, 388) @@ -510,6 +519,7 @@ Partial Class AddUser ' 'UserMustChangePwOnNextLogon ' + Me.UserMustChangePwOnNextLogon.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left), System.Windows.Forms.AnchorStyles) Me.UserMustChangePwOnNextLogon.AutoSize = True Me.UserMustChangePwOnNextLogon.FlatStyle = System.Windows.Forms.FlatStyle.System Me.UserMustChangePwOnNextLogon.Location = New System.Drawing.Point(17, 295) @@ -521,6 +531,7 @@ Partial Class AddUser ' 'UserCantChangePw ' + Me.UserCantChangePw.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left), System.Windows.Forms.AnchorStyles) Me.UserCantChangePw.AutoSize = True Me.UserCantChangePw.FlatStyle = System.Windows.Forms.FlatStyle.System Me.UserCantChangePw.Location = New System.Drawing.Point(17, 326) @@ -532,6 +543,7 @@ Partial Class AddUser ' 'PwNeverExpires ' + Me.PwNeverExpires.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left), System.Windows.Forms.AnchorStyles) Me.PwNeverExpires.AutoSize = True Me.PwNeverExpires.FlatStyle = System.Windows.Forms.FlatStyle.System Me.PwNeverExpires.Location = New System.Drawing.Point(17, 357) @@ -543,6 +555,7 @@ Partial Class AddUser ' 'Label13 ' + Me.Label13.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left), System.Windows.Forms.AnchorStyles) Me.Label13.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D Me.Label13.Location = New System.Drawing.Point(13, 202) Me.Label13.Name = "Label13" @@ -551,6 +564,7 @@ Partial Class AddUser ' 'Password ' + Me.Password.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left), System.Windows.Forms.AnchorStyles) Me.Password.Location = New System.Drawing.Point(127, 218) Me.Password.Name = "Password" Me.Password.Size = New System.Drawing.Size(274, 23) @@ -559,6 +573,7 @@ Partial Class AddUser ' 'Label5 ' + Me.Label5.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left), System.Windows.Forms.AnchorStyles) Me.Label5.AutoSize = True Me.Label5.Location = New System.Drawing.Point(62, 221) Me.Label5.Name = "Label5" @@ -568,6 +583,7 @@ Partial Class AddUser ' 'PasswordConfirm ' + Me.PasswordConfirm.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left), System.Windows.Forms.AnchorStyles) Me.PasswordConfirm.Location = New System.Drawing.Point(127, 253) Me.PasswordConfirm.Name = "PasswordConfirm" Me.PasswordConfirm.Size = New System.Drawing.Size(274, 23) @@ -576,6 +592,7 @@ Partial Class AddUser ' 'Label4 ' + Me.Label4.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left), System.Windows.Forms.AnchorStyles) Me.Label4.AutoSize = True Me.Label4.Location = New System.Drawing.Point(14, 256) Me.Label4.Name = "Label4" diff --git a/lusrmgr/src/PropertyWindows/AddUser.vb b/lusrmgr/src/PropertyWindows/AddUser.vb index af701fa..dc49acb 100644 --- a/lusrmgr/src/PropertyWindows/AddUser.vb +++ b/lusrmgr/src/PropertyWindows/AddUser.vb @@ -135,7 +135,7 @@ Public Class AddUser newUser.CommitChanges() Catch ex As UnauthorizedAccessException - ShowPermissionDeniedErr(Handle) + ShowPermissionDeniedErr(Handle, AD.IsRemoteAD()) Return Catch ex As Runtime.InteropServices.COMException If ex.ErrorCode = COMErrorCodes.PW_POLICY Then @@ -173,7 +173,7 @@ Public Class AddUser g.CommitChanges() Next Catch ex As UnauthorizedAccessException - ShowPermissionDeniedErr(Handle) + ShowPermissionDeniedErr(Handle, AD.IsRemoteAD()) Return Catch ex As Runtime.InteropServices.COMException If ShowCOMErr(ex.ErrorCode, Handle, ex.Message) = COMErrResult.REFRESH Then @@ -357,7 +357,7 @@ Public Class AddUser tdc.dwCommonButtons = TASKDIALOG_COMMON_BUTTON_FLAGS.TDCBF_OK_BUTTON Or TASKDIALOG_COMMON_BUTTON_FLAGS.TDCBF_CANCEL_BUTTON tdc.pszVerificationText = "Do not show this warning again" - tdc.pszMainIcon = TD_WARNING + tdc.pszMainIcon = TD_WARNING_ICON TaskDialogIndirect(tdc, result, Nothing, verif) @@ -391,13 +391,13 @@ Public Class AddUser tdc.cbSize = Runtime.InteropServices.Marshal.SizeOf(tdc) tdc.hwndParent = Handle - tdc.pszWindowTitle = "Inaccessible account" - tdc.pszMainInstruction = "User won't be able to log on" + tdc.pszWindowTitle = "Inaccessible account warning" + tdc.pszMainInstruction = "Inaccessible account" tdc.pszContent = "The user's permission to change its password is not granted, but the user must change it before logging in the next time." & vbCrLf & "This will result in an inaccessible account." tdc.dwCommonButtons = TASKDIALOG_COMMON_BUTTON_FLAGS.TDCBF_OK_BUTTON tdc.pszVerificationText = "Hide this warning" - tdc.pszMainIcon = TD_WARNING + tdc.pszMainIcon = TD_WARNING_ICON Dim verif As Boolean diff --git a/lusrmgr/src/PropertyWindows/EditGroup.vb b/lusrmgr/src/PropertyWindows/EditGroup.vb index 56f5c60..1fa48c6 100644 --- a/lusrmgr/src/PropertyWindows/EditGroup.vb +++ b/lusrmgr/src/PropertyWindows/EditGroup.vb @@ -122,7 +122,7 @@ Public Class EditGroup Try gp.CommitChanges() Catch ex As UnauthorizedAccessException - ShowPermissionDeniedErr(Handle) + ShowPermissionDeniedErr(Handle, AD.IsRemoteAD()) Return Catch ex As Runtime.InteropServices.COMException If ShowCOMErr(ex.ErrorCode, Handle, ex.Message, GroupNameTextBox.Text) = COMErrResult.REFRESH Then @@ -178,7 +178,7 @@ Public Class EditGroup tdc.dwCommonButtons = TASKDIALOG_COMMON_BUTTON_FLAGS.TDCBF_OK_BUTTON Or TASKDIALOG_COMMON_BUTTON_FLAGS.TDCBF_CANCEL_BUTTON tdc.pszVerificationText = "Do not show this warning again" - tdc.pszMainIcon = TD_WARNING + tdc.pszMainIcon = TD_WARNING_ICON TaskDialogIndirect(tdc, result, Nothing, verif) @@ -195,7 +195,7 @@ Public Class EditGroup gp.CommitChanges() item.Remove() Catch ex As UnauthorizedAccessException - ShowPermissionDeniedErr(Handle) + ShowPermissionDeniedErr(Handle, AD.IsRemoteAD()) Return Catch ex As Runtime.InteropServices.COMException If ShowCOMErr(ex.ErrorCode, Handle, ex.Message, GroupNameTextBox.Text) = COMErrResult.REFRESH Then @@ -211,10 +211,6 @@ Public Class EditGroup AddToGroup.Show(gp.Name, AD, AddToGroup.SourceWindow.EditGroup, GroupMembers) End Sub - 'Private Sub TextBox1_KeyPress(sender As Object, e As KeyPressEventArgs) Handles GroupNameTextBox.KeyPress - ' If isDisallowed(e.KeyChar) Then e.KeyChar = Nothing : ToolTip1.Show("The symbols / \ [ ] "" : ; | < > + = , ? * % @ cannot be used in group names.", GroupNameTextBox, 3000) - 'End Sub - Private Sub ListView1_ColumnWidthChanging(sender As Object, e As ColumnWidthChangingEventArgs) Handles GroupMembers.ColumnWidthChanging e.NewWidth = GroupMembers.Columns(0).Width e.Cancel = True diff --git a/lusrmgr/src/PropertyWindows/EditUser.Designer.vb b/lusrmgr/src/PropertyWindows/EditUser.Designer.vb index c2d1f5f..bacb3e4 100644 --- a/lusrmgr/src/PropertyWindows/EditUser.Designer.vb +++ b/lusrmgr/src/PropertyWindows/EditUser.Designer.vb @@ -27,11 +27,8 @@ Partial Class EditUser Me.Tabs = New System.Windows.Forms.TabControl() Me.TabGeneral = New System.Windows.Forms.TabPage() Me.Label13 = New System.Windows.Forms.Label() - Me.OkButton = New System.Windows.Forms.Button() Me.SID = New System.Windows.Forms.TextBox() - Me.CancelBtn = New System.Windows.Forms.Button() Me.Label20 = New System.Windows.Forms.Label() - Me.ApplyButton = New System.Windows.Forms.Button() Me.UserNameTextBox = New System.Windows.Forms.TextBox() Me.Label3 = New System.Windows.Forms.Label() Me.Label4 = New System.Windows.Forms.Label() @@ -39,11 +36,9 @@ Partial Class EditUser Me.Label1 = New System.Windows.Forms.Label() Me.FullName = New System.Windows.Forms.TextBox() Me.Comment = New System.Windows.Forms.TextBox() - Me.UserLabel = New System.Windows.Forms.Label() - Me.UserIcon = New System.Windows.Forms.PictureBox() Me.TabPassword = New System.Windows.Forms.TabPage() + Me.disabledInfo = New lusrmgr.TransparentPanel() Me.warnImg = New System.Windows.Forms.PictureBox() - Me.disabledImg = New System.Windows.Forms.PictureBox() Me.PwNotRequired = New System.Windows.Forms.CheckBox() Me.Label9 = New System.Windows.Forms.Label() Me.UserCantChangePw = New System.Windows.Forms.CheckBox() @@ -89,13 +84,18 @@ Partial Class EditUser Me.AddToGrpBtn = New System.Windows.Forms.Button() Me.GroupMembership = New lusrmgr.ListView() Me.ColumnHeader1 = CType(New System.Windows.Forms.ColumnHeader(), System.Windows.Forms.ColumnHeader) + Me.UserLabel = New System.Windows.Forms.Label() + Me.UserIcon = New System.Windows.Forms.PictureBox() + Me.OkButton = New System.Windows.Forms.Button() + Me.CancelBtn = New System.Windows.Forms.Button() + Me.ApplyButton = New System.Windows.Forms.Button() Me.UserMustChangePasswordInfo = New System.Windows.Forms.ToolTip(Me.components) + Me.BottomPanel = New System.Windows.Forms.Panel() + Me.TopPanel = New System.Windows.Forms.Panel() Me.Tabs.SuspendLayout() Me.TabGeneral.SuspendLayout() - CType(Me.UserIcon, System.ComponentModel.ISupportInitialize).BeginInit() Me.TabPassword.SuspendLayout() CType(Me.warnImg, System.ComponentModel.ISupportInitialize).BeginInit() - CType(Me.disabledImg, System.ComponentModel.ISupportInitialize).BeginInit() Me.CopyContextMenu.SuspendLayout() Me.TabLogon.SuspendLayout() Me.GroupBox3.SuspendLayout() @@ -103,6 +103,9 @@ Partial Class EditUser Me.GroupBox2.SuspendLayout() Me.GroupBox1.SuspendLayout() Me.TabGroups.SuspendLayout() + CType(Me.UserIcon, System.ComponentModel.ISupportInitialize).BeginInit() + Me.BottomPanel.SuspendLayout() + Me.TopPanel.SuspendLayout() Me.SuspendLayout() ' 'Tabs @@ -124,11 +127,8 @@ Partial Class EditUser ' Me.TabGeneral.BackColor = System.Drawing.SystemColors.Control Me.TabGeneral.Controls.Add(Me.Label13) - Me.TabGeneral.Controls.Add(Me.OkButton) Me.TabGeneral.Controls.Add(Me.SID) - Me.TabGeneral.Controls.Add(Me.CancelBtn) Me.TabGeneral.Controls.Add(Me.Label20) - Me.TabGeneral.Controls.Add(Me.ApplyButton) Me.TabGeneral.Controls.Add(Me.UserNameTextBox) Me.TabGeneral.Controls.Add(Me.Label3) Me.TabGeneral.Controls.Add(Me.Label4) @@ -136,8 +136,6 @@ Partial Class EditUser Me.TabGeneral.Controls.Add(Me.Label1) Me.TabGeneral.Controls.Add(Me.FullName) Me.TabGeneral.Controls.Add(Me.Comment) - Me.TabGeneral.Controls.Add(Me.UserLabel) - Me.TabGeneral.Controls.Add(Me.UserIcon) Me.TabGeneral.Location = New System.Drawing.Point(4, 24) Me.TabGeneral.Name = "TabGeneral" Me.TabGeneral.Padding = New System.Windows.Forms.Padding(3) @@ -147,66 +145,38 @@ Partial Class EditUser ' 'Label13 ' + Me.Label13.Anchor = CType(((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left) _ + Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.Label13.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D - Me.Label13.Location = New System.Drawing.Point(22, 282) + Me.Label13.Location = New System.Drawing.Point(22, 277) Me.Label13.Name = "Label13" Me.Label13.Size = New System.Drawing.Size(376, 2) Me.Label13.TabIndex = 99 ' - 'OkButton - ' - Me.OkButton.Anchor = System.Windows.Forms.AnchorStyles.None - Me.OkButton.FlatStyle = System.Windows.Forms.FlatStyle.System - Me.OkButton.Location = New System.Drawing.Point(138, 365) - Me.OkButton.Name = "OkButton" - Me.OkButton.Size = New System.Drawing.Size(88, 29) - Me.OkButton.TabIndex = 8 - Me.OkButton.Text = "OK" - Me.OkButton.UseVisualStyleBackColor = True - ' 'SID ' - Me.SID.Location = New System.Drawing.Point(101, 300) + Me.SID.Anchor = CType(((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left) _ + Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.SID.Location = New System.Drawing.Point(101, 295) Me.SID.Name = "SID" Me.SID.ReadOnly = True Me.SID.Size = New System.Drawing.Size(297, 23) Me.SID.TabIndex = 4 ' - 'CancelBtn - ' - Me.CancelBtn.Anchor = System.Windows.Forms.AnchorStyles.None - Me.CancelBtn.DialogResult = System.Windows.Forms.DialogResult.Cancel - Me.CancelBtn.FlatStyle = System.Windows.Forms.FlatStyle.System - Me.CancelBtn.Location = New System.Drawing.Point(233, 365) - Me.CancelBtn.Name = "CancelBtn" - Me.CancelBtn.Size = New System.Drawing.Size(88, 29) - Me.CancelBtn.TabIndex = 9 - Me.CancelBtn.Text = "Cancel" - Me.CancelBtn.UseVisualStyleBackColor = True - ' 'Label20 ' - Me.Label20.Location = New System.Drawing.Point(21, 300) + Me.Label20.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left), System.Windows.Forms.AnchorStyles) + Me.Label20.Location = New System.Drawing.Point(21, 295) Me.Label20.Name = "Label20" Me.Label20.Size = New System.Drawing.Size(72, 23) Me.Label20.TabIndex = 64 Me.Label20.Text = "SID:" Me.Label20.TextAlign = System.Drawing.ContentAlignment.MiddleRight ' - 'ApplyButton - ' - Me.ApplyButton.Anchor = System.Windows.Forms.AnchorStyles.None - Me.ApplyButton.Enabled = False - Me.ApplyButton.FlatStyle = System.Windows.Forms.FlatStyle.System - Me.ApplyButton.Location = New System.Drawing.Point(328, 365) - Me.ApplyButton.Name = "ApplyButton" - Me.ApplyButton.Size = New System.Drawing.Size(88, 29) - Me.ApplyButton.TabIndex = 10 - Me.ApplyButton.Text = "Apply" - Me.ApplyButton.UseVisualStyleBackColor = True - ' 'UserNameTextBox ' + Me.UserNameTextBox.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _ + Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.UserNameTextBox.BackColor = System.Drawing.SystemColors.Control Me.UserNameTextBox.BorderStyle = System.Windows.Forms.BorderStyle.None Me.UserNameTextBox.Location = New System.Drawing.Point(101, 73) @@ -254,6 +224,8 @@ Partial Class EditUser ' 'FullName ' + Me.FullName.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _ + Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.FullName.Location = New System.Drawing.Point(101, 108) Me.FullName.Name = "FullName" Me.FullName.Size = New System.Drawing.Size(297, 23) @@ -261,36 +233,21 @@ Partial Class EditUser ' 'Comment ' + Me.Comment.Anchor = CType((((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _ + Or System.Windows.Forms.AnchorStyles.Left) _ + Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.Comment.Location = New System.Drawing.Point(101, 151) Me.Comment.Multiline = True Me.Comment.Name = "Comment" Me.Comment.ScrollBars = System.Windows.Forms.ScrollBars.Vertical - Me.Comment.Size = New System.Drawing.Size(297, 113) + Me.Comment.Size = New System.Drawing.Size(297, 108) Me.Comment.TabIndex = 3 ' - 'UserLabel - ' - Me.UserLabel.Location = New System.Drawing.Point(51, 15) - Me.UserLabel.Name = "UserLabel" - Me.UserLabel.Size = New System.Drawing.Size(363, 39) - Me.UserLabel.TabIndex = 15 - Me.UserLabel.Text = "User settings for" - Me.UserLabel.TextAlign = System.Drawing.ContentAlignment.MiddleLeft - ' - 'UserIcon - ' - Me.UserIcon.Image = Global.lusrmgr.My.Resources.Resources.UserIcon - Me.UserIcon.Location = New System.Drawing.Point(13, 15) - Me.UserIcon.Name = "UserIcon" - Me.UserIcon.Size = New System.Drawing.Size(38, 40) - Me.UserIcon.TabIndex = 14 - Me.UserIcon.TabStop = False - ' 'TabPassword ' Me.TabPassword.BackColor = System.Drawing.SystemColors.Control + Me.TabPassword.Controls.Add(Me.disabledInfo) Me.TabPassword.Controls.Add(Me.warnImg) - Me.TabPassword.Controls.Add(Me.disabledImg) Me.TabPassword.Controls.Add(Me.PwNotRequired) Me.TabPassword.Controls.Add(Me.Label9) Me.TabPassword.Controls.Add(Me.UserCantChangePw) @@ -308,30 +265,28 @@ Partial Class EditUser Me.TabPassword.TabIndex = 4 Me.TabPassword.Text = "Password" ' + 'disabledInfo + ' + Me.disabledInfo.BackColor = System.Drawing.Color.Transparent + Me.disabledInfo.Location = New System.Drawing.Point(18, 211) + Me.disabledInfo.Name = "disabledInfo" + Me.disabledInfo.Size = New System.Drawing.Size(260, 36) + Me.disabledInfo.TabIndex = 108 + Me.UserMustChangePasswordInfo.SetToolTip(Me.disabledInfo, "This option cannot be enabled if either the option" & Global.Microsoft.VisualBasic.ChrW(13) & Global.Microsoft.VisualBasic.ChrW(10) & """Password never expires"" is e" & _ + "nabled or a smartcard logon is forced.") + Me.disabledInfo.Visible = False + ' 'warnImg ' - Me.warnImg.Image = Global.lusrmgr.My.Resources.Resources.Shield - Me.warnImg.Location = New System.Drawing.Point(209, 251) + Me.warnImg.Image = Global.lusrmgr.My.Resources.Resources.Warning + Me.warnImg.Location = New System.Drawing.Point(209, 255) Me.warnImg.Name = "warnImg" - Me.warnImg.Size = New System.Drawing.Size(28, 27) + Me.warnImg.Size = New System.Drawing.Size(16, 16) Me.warnImg.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize Me.warnImg.TabIndex = 102 Me.warnImg.TabStop = False Me.warnImg.Visible = False ' - 'disabledImg - ' - Me.disabledImg.Image = CType(resources.GetObject("disabledImg.Image"), System.Drawing.Image) - Me.disabledImg.Location = New System.Drawing.Point(267, 213) - Me.disabledImg.Name = "disabledImg" - Me.disabledImg.Size = New System.Drawing.Size(34, 34) - Me.disabledImg.SizeMode = System.Windows.Forms.PictureBoxSizeMode.CenterImage - Me.disabledImg.TabIndex = 101 - Me.disabledImg.TabStop = False - Me.UserMustChangePasswordInfo.SetToolTip(Me.disabledImg, "This option cannot be enabled if either the option" & Global.Microsoft.VisualBasic.ChrW(13) & Global.Microsoft.VisualBasic.ChrW(10) & """Password never expires"" is e" & _ - "nabled or a smartcard logon is forced.") - Me.disabledImg.Visible = False - ' 'PwNotRequired ' Me.PwNotRequired.AutoSize = True @@ -345,6 +300,8 @@ Partial Class EditUser ' 'Label9 ' + Me.Label9.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _ + Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.Label9.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D Me.Label9.Location = New System.Drawing.Point(13, 199) Me.Label9.Name = "Label9" @@ -397,6 +354,8 @@ Partial Class EditUser ' 'PwLastChanged ' + Me.PwLastChanged.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _ + Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.PwLastChanged.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle Me.PwLastChanged.ContextMenuStrip = Me.CopyContextMenu Me.PwLastChanged.Location = New System.Drawing.Point(162, 109) @@ -440,6 +399,8 @@ Partial Class EditUser ' 'PwExpDate ' + Me.PwExpDate.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _ + Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.PwExpDate.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle Me.PwExpDate.ContextMenuStrip = Me.CopyContextMenu Me.PwExpDate.Location = New System.Drawing.Point(162, 71) @@ -469,6 +430,8 @@ Partial Class EditUser ' 'GroupBox3 ' + Me.GroupBox3.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _ + Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.GroupBox3.Controls.Add(Me.AccountExpDate) Me.GroupBox3.Controls.Add(Me.AccountNeverExpires) Me.GroupBox3.Controls.Add(Me.AccountExpTime) @@ -481,7 +444,7 @@ Partial Class EditUser ' 'AccountExpDate ' - Me.AccountExpDate.Anchor = System.Windows.Forms.AnchorStyles.None + Me.AccountExpDate.Anchor = CType((System.Windows.Forms.AnchorStyles.Left Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.AccountExpDate.CustomFormat = "" Me.AccountExpDate.Location = New System.Drawing.Point(17, 28) Me.AccountExpDate.Name = "AccountExpDate" @@ -490,7 +453,7 @@ Partial Class EditUser ' 'AccountNeverExpires ' - Me.AccountNeverExpires.Anchor = System.Windows.Forms.AnchorStyles.None + Me.AccountNeverExpires.Anchor = System.Windows.Forms.AnchorStyles.Left Me.AccountNeverExpires.AutoSize = True Me.AccountNeverExpires.FlatStyle = System.Windows.Forms.FlatStyle.System Me.AccountNeverExpires.Location = New System.Drawing.Point(17, 58) @@ -502,13 +465,13 @@ Partial Class EditUser ' 'AccountExpTime ' - Me.AccountExpTime.Anchor = System.Windows.Forms.AnchorStyles.None + Me.AccountExpTime.Anchor = System.Windows.Forms.AnchorStyles.Right Me.AccountExpTime.CustomFormat = "" Me.AccountExpTime.Format = System.Windows.Forms.DateTimePickerFormat.Time Me.AccountExpTime.Location = New System.Drawing.Point(289, 28) Me.AccountExpTime.Name = "AccountExpTime" Me.AccountExpTime.ShowUpDown = True - Me.AccountExpTime.Size = New System.Drawing.Size(86, 23) + Me.AccountExpTime.Size = New System.Drawing.Size(91, 23) Me.AccountExpTime.TabIndex = 102 ' 'unlockbtn @@ -557,6 +520,8 @@ Partial Class EditUser ' 'failedtimes ' + Me.failedtimes.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _ + Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.failedtimes.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle Me.failedtimes.ContextMenuStrip = Me.CopyContextMenu Me.failedtimes.Location = New System.Drawing.Point(181, 108) @@ -567,6 +532,8 @@ Partial Class EditUser ' 'lastlogon ' + Me.lastlogon.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _ + Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.lastlogon.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle Me.lastlogon.ContextMenuStrip = Me.CopyContextMenu Me.lastlogon.Location = New System.Drawing.Point(181, 69) @@ -607,6 +574,8 @@ Partial Class EditUser ' 'GroupBox2 ' + Me.GroupBox2.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _ + Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.GroupBox2.Controls.Add(Me.Label21) Me.GroupBox2.Controls.Add(Me.ProfilePath) Me.GroupBox2.Controls.Add(Me.Label15) @@ -629,6 +598,8 @@ Partial Class EditUser ' 'ProfilePath ' + Me.ProfilePath.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _ + Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.ProfilePath.Location = New System.Drawing.Point(97, 27) Me.ProfilePath.Name = "ProfilePath" Me.ProfilePath.Size = New System.Drawing.Size(290, 23) @@ -645,6 +616,8 @@ Partial Class EditUser ' 'ScriptPath ' + Me.ScriptPath.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _ + Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.ScriptPath.Location = New System.Drawing.Point(97, 65) Me.ScriptPath.Name = "ScriptPath" Me.ScriptPath.Size = New System.Drawing.Size(290, 23) @@ -652,6 +625,8 @@ Partial Class EditUser ' 'GroupBox1 ' + Me.GroupBox1.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _ + Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.GroupBox1.Controls.Add(Me.homedrvR) Me.GroupBox1.Controls.Add(Me.HomeRemotePath) Me.GroupBox1.Controls.Add(Me.homedirL) @@ -692,6 +667,8 @@ Partial Class EditUser ' 'homedirL ' + Me.homedirL.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _ + Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.homedirL.Enabled = False Me.homedirL.Location = New System.Drawing.Point(105, 29) Me.homedirL.Name = "homedirL" @@ -710,6 +687,8 @@ Partial Class EditUser ' 'homedirR ' + Me.homedirR.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _ + Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.homedirR.Enabled = False Me.homedirR.Location = New System.Drawing.Point(105, 131) Me.homedirR.Name = "homedirR" @@ -807,12 +786,89 @@ Partial Class EditUser Me.ColumnHeader1.Text = "Groups" Me.ColumnHeader1.Width = 406 ' + 'UserLabel + ' + Me.UserLabel.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _ + Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.UserLabel.Location = New System.Drawing.Point(41, 9) + Me.UserLabel.Name = "UserLabel" + Me.UserLabel.Size = New System.Drawing.Size(368, 39) + Me.UserLabel.TabIndex = 15 + Me.UserLabel.Text = "User settings for" + Me.UserLabel.TextAlign = System.Drawing.ContentAlignment.MiddleLeft + ' + 'UserIcon + ' + Me.UserIcon.Image = Global.lusrmgr.My.Resources.Resources.UserIcon + Me.UserIcon.Location = New System.Drawing.Point(3, 9) + Me.UserIcon.Name = "UserIcon" + Me.UserIcon.Size = New System.Drawing.Size(38, 40) + Me.UserIcon.TabIndex = 14 + Me.UserIcon.TabStop = False + ' + 'OkButton + ' + Me.OkButton.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.OkButton.FlatStyle = System.Windows.Forms.FlatStyle.System + Me.OkButton.Location = New System.Drawing.Point(125, 7) + Me.OkButton.Name = "OkButton" + Me.OkButton.Size = New System.Drawing.Size(88, 29) + Me.OkButton.TabIndex = 8 + Me.OkButton.Text = "OK" + Me.OkButton.UseVisualStyleBackColor = True + ' + 'CancelBtn + ' + Me.CancelBtn.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.CancelBtn.DialogResult = System.Windows.Forms.DialogResult.Cancel + Me.CancelBtn.FlatStyle = System.Windows.Forms.FlatStyle.System + Me.CancelBtn.Location = New System.Drawing.Point(220, 7) + Me.CancelBtn.Name = "CancelBtn" + Me.CancelBtn.Size = New System.Drawing.Size(88, 29) + Me.CancelBtn.TabIndex = 9 + Me.CancelBtn.Text = "Cancel" + Me.CancelBtn.UseVisualStyleBackColor = True + ' + 'ApplyButton + ' + Me.ApplyButton.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.ApplyButton.Enabled = False + Me.ApplyButton.FlatStyle = System.Windows.Forms.FlatStyle.System + Me.ApplyButton.Location = New System.Drawing.Point(315, 7) + Me.ApplyButton.Name = "ApplyButton" + Me.ApplyButton.Size = New System.Drawing.Size(88, 29) + Me.ApplyButton.TabIndex = 10 + Me.ApplyButton.Text = "Apply" + Me.ApplyButton.UseVisualStyleBackColor = True + ' 'UserMustChangePasswordInfo ' Me.UserMustChangePasswordInfo.IsBalloon = True Me.UserMustChangePasswordInfo.ToolTipIcon = System.Windows.Forms.ToolTipIcon.Info Me.UserMustChangePasswordInfo.ToolTipTitle = "User must change password at next logon" ' + 'BottomPanel + ' + Me.BottomPanel.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.BottomPanel.Controls.Add(Me.ApplyButton) + Me.BottomPanel.Controls.Add(Me.OkButton) + Me.BottomPanel.Controls.Add(Me.CancelBtn) + Me.BottomPanel.Location = New System.Drawing.Point(16, 382) + Me.BottomPanel.Name = "BottomPanel" + Me.BottomPanel.Size = New System.Drawing.Size(409, 43) + Me.BottomPanel.TabIndex = 1 + ' + 'TopPanel + ' + Me.TopPanel.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _ + Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.TopPanel.Controls.Add(Me.UserLabel) + Me.TopPanel.Controls.Add(Me.UserIcon) + Me.TopPanel.Location = New System.Drawing.Point(13, 30) + Me.TopPanel.Name = "TopPanel" + Me.TopPanel.Size = New System.Drawing.Size(415, 53) + Me.TopPanel.TabIndex = 100 + ' 'EditUser ' Me.AcceptButton = Me.OkButton @@ -820,22 +876,22 @@ Partial Class EditUser Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font Me.CancelButton = Me.CancelBtn Me.ClientSize = New System.Drawing.Size(434, 436) + Me.Controls.Add(Me.BottomPanel) + Me.Controls.Add(Me.TopPanel) Me.Controls.Add(Me.Tabs) Me.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog Me.Icon = CType(resources.GetObject("$this.Icon"), System.Drawing.Icon) Me.MaximizeBox = False + Me.MinimumSize = New System.Drawing.Size(450, 475) Me.Name = "EditUser" Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen Me.Text = "EditUser" Me.Tabs.ResumeLayout(False) Me.TabGeneral.ResumeLayout(False) Me.TabGeneral.PerformLayout() - CType(Me.UserIcon, System.ComponentModel.ISupportInitialize).EndInit() Me.TabPassword.ResumeLayout(False) Me.TabPassword.PerformLayout() CType(Me.warnImg, System.ComponentModel.ISupportInitialize).EndInit() - CType(Me.disabledImg, System.ComponentModel.ISupportInitialize).EndInit() Me.CopyContextMenu.ResumeLayout(False) Me.TabLogon.ResumeLayout(False) Me.TabLogon.PerformLayout() @@ -847,6 +903,9 @@ Partial Class EditUser Me.GroupBox1.ResumeLayout(False) Me.GroupBox1.PerformLayout() Me.TabGroups.ResumeLayout(False) + CType(Me.UserIcon, System.ComponentModel.ISupportInitialize).EndInit() + Me.BottomPanel.ResumeLayout(False) + Me.TopPanel.ResumeLayout(False) Me.ResumeLayout(False) End Sub @@ -894,7 +953,6 @@ Partial Class EditUser Friend WithEvents PwNeverExpires As System.Windows.Forms.CheckBox Friend WithEvents UserMustChangePwOnNextLogon As System.Windows.Forms.CheckBox Friend WithEvents PwNotRequired As System.Windows.Forms.CheckBox - Friend WithEvents disabledImg As System.Windows.Forms.PictureBox Private WithEvents UserMustChangePasswordInfo As System.Windows.Forms.ToolTip Friend WithEvents warnImg As System.Windows.Forms.PictureBox Friend WithEvents CopyContextMenu As System.Windows.Forms.ContextMenuStrip @@ -916,4 +974,7 @@ Partial Class EditUser Friend WithEvents AccountNeverExpires As System.Windows.Forms.CheckBox Friend WithEvents AccountExpTime As System.Windows.Forms.DateTimePicker Friend WithEvents GroupBox3 As System.Windows.Forms.GroupBox + Friend WithEvents BottomPanel As System.Windows.Forms.Panel + Friend WithEvents TopPanel As System.Windows.Forms.Panel + Friend WithEvents disabledInfo As lusrmgr.TransparentPanel End Class diff --git a/lusrmgr/src/PropertyWindows/EditUser.resx b/lusrmgr/src/PropertyWindows/EditUser.resx index 9171ead..c7e8535 100644 --- a/lusrmgr/src/PropertyWindows/EditUser.resx +++ b/lusrmgr/src/PropertyWindows/EditUser.resx @@ -117,41 +117,13 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - - iVBORw0KGgoAAAANSUhEUgAAABUAAAAVCAYAAACpF6WWAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO - wwAADsMBx2+oZAAABSBJREFUOE+Fk2tMk1cYx9FsyZJpFhNhogKKl2V8mEbnlFLoBQgqTBQJMC5OHaJA - Ee8iIjLlMtxQvJQCSrmNFmjpW1p6oeXacikIAxSnsGyoiYhoFo2JfsD439MX3DKj2z/55ZwP7/PLeZ7z - Hod3JSYmZqVEIj7GqBQGvU7zSFPPQKtRv6L9aE2NTJ6fdy6ax+PNn/n8v8PhcOYWFhamdnZax/oHhl7r - mgdRohxEdlE3MgssuFjailp1K6wdXVNNZpMtKytrK5XNmq5+R/z8/D5p0NSXDw8PgzENI6P4N8TnPcTO - nAmEZzzE9rT7CE29g9Cj3fguhYG0So/eHtvTiooy0Yzi3+F5eMxp0GjKb/06gguVNxD34zhisp8gKnMS - O7InUN3yHCrLc4SnjyHwyAg2HriBTfv0SMmsQG/v9RdXi4r2zqj+STG1PDQ09Pqc9BdEn7mP8O/HEZHx - ANtO3keu7AneJLfiLoSim/AVDYK3rx/8XVqkZleiw2p5nJKS4jmjm76Urk7rH1XqfkSmjyIk9R62n7yL - EGJLyu9IzLuH8cmXePT4Gfac6YMgfhB8EnrH9sBzZwd40TKUy3WoU9bKSPcBKy0Ui4939/Rj39luBB0d - xdcsI7QfoVbvwD/pFoKP3ETwIRLFDYAX10eyLqyLsWJNZDtWhxkRlVQCo8EwGRsbu5qVMoxSL1NZEXTw - OgKSh2lew+xqx49ajUm/jQbLBDSt9xB6sAVu/ioWV786Fjd/Bl9sFqOiikFO1tl4Vkr/3kS2uBHC+F4I - EgZYhPG0UpurIqzYfcqG0dtDGOjrQEKaGvM5VVjEV/zNQr4Sbj7FuHK1HkWSAgkrrWfqIEpXUGs2cPf0 - wifuOrx298BjWyOcfBQITW5CV4cFLU1G7E1Vw8lLTrK6aXhKLOTR6l2GnIsqlEmvKt9Ip0Snqtmhb9jZ - jbVRFizbrIGLbx2cvJUISTLBbDLAoNdg74l6OHFqScbMoCIprdwynC/UQVpSzJByloNOq76dfq4G6yJN - WB3RjqWbNDQr+8wYkqqwNbERJqMOzWYD4lMb8ClHBRdeAxazaEmsxVJeKYrLdcg/n1dK0tkOCnrLRaUM - 1oTIsSywgR28XegqJCmXwTaRGe3tzei1dSAxzYgFHC1c+Y3T8IxY7GPA2kApapU67NgRfZA9aX5eXqTB - YJziBP+AJQH2m62Hqy8h1JBUg9D9LRgc6MPY2CgOZLTA2cuIJfxWFjd+C1x9tNhzpBpyWdW4u7s7l6QO - Dlwud57Z3Nh5JrcIywRiktJJSOgqpFa9dIg41IHJR+N4NfUShzOtWORlhrvAStDshW1YF1gJlboZJ44d - qiCdIyu1JzMzM9hqbXsaFZeDpYISuPlq4SbUY4GXAd8cttEDfcU+0+QMC1y4rSSzYYVvJ1YF1CJfokN1 - VfldZ2dnf1J9OG2ciVQqTWhvb3uxS/QTVvDpxAL77JqxKrgNiekW7D9twZdb9NRNF1bSCTcEVeO8WAuj - ruGJ5/r1+0kxb9r0VsSXLiU0mRv/vCyRYWPEBXgIr8HdW4HFG+hv8KzDZwIGXwXVYHdyFVSMGQp55QMv - T8/DVLqImM1K3pWkpCSBXFapUzOq5z/LGJTJW5FfaMKVa82ooH2dQgumRv7s9Inj+iUuLuFU4ky8X/gm - jo6Oc8LCwgLS09JyCwvEuiKJuEtScNmWm5tjiP025vLK5cuj6bPPibnE/wvfir3gY8J+qwuJBYR9dh8R - 75E5OPwFLlZIjIv4+88AAAAASUVORK5CYII= - - 92, 17 299, 18 + AAABAAYAICAQAAEABADoAgAAZgAAABAQEAABAAQAKAEAAE4DAAAgIAAAAQAIAKgIAAB2BAAAEBAAAAEA diff --git a/lusrmgr/src/PropertyWindows/EditUser.vb b/lusrmgr/src/PropertyWindows/EditUser.vb index 1437f50..a585244 100644 --- a/lusrmgr/src/PropertyWindows/EditUser.vb +++ b/lusrmgr/src/PropertyWindows/EditUser.vb @@ -9,9 +9,6 @@ Public Class EditUser Public Sub New() InitializeComponent() CopyContextMenu.Renderer = New clsMenuRenderer() - OkButton.Top = 365 - CancelBtn.Top = 365 - ApplyButton.Top = 365 GroupMembership.SmallImageList = MainForm.ListIcons End Sub @@ -268,7 +265,7 @@ Public Class EditUser Return End Select Catch exx As UnauthorizedAccessException - ShowPermissionDeniedErr(Handle) + ShowPermissionDeniedErr(Handle, AD.IsRemoteAD()) Return End Try Case COMErrResult.REFRESH, COMErrResult.UNKOWN_ERR @@ -278,7 +275,7 @@ Public Class EditUser End Select Catch ex As UnauthorizedAccessException - ShowPermissionDeniedErr(Handle) + ShowPermissionDeniedErr(Handle, AD.IsRemoteAD()) Return End Try @@ -343,7 +340,7 @@ Public Class EditUser Private Sub TimesBtn_Click(sender As Object, e As EventArgs) Handles TimesBtn.Click Using TimesDialog As New Times - If TimesDialog.EditTimes(dsUserp) = Windows.Forms.DialogResult.Retry Then + If TimesDialog.EditTimes(dsUserp, AD.IsRemoteAD()) = Windows.Forms.DialogResult.Retry Then AD.RefreshDS() Close() End If @@ -368,11 +365,11 @@ Public Class EditUser UserMustChangePwOnNextLogon.Checked = False UserMustChangePwOnNextLogon.Enabled = False If cfgBool("HideDisabledFlagInfo") = 0 Then - disabledImg.Show() + disabledInfo.Show() End If Else UserMustChangePwOnNextLogon.Enabled = True - disabledImg.Hide() + disabledInfo.Hide() End If End Sub @@ -383,16 +380,12 @@ Public Class EditUser Private Sub TabChanging(sender As Object, e As TabControlCancelEventArgs) Handles Tabs.Selecting - UserIcon.Parent = e.TabPage - UserLabel.Parent = e.TabPage - If e.TabPageIndex <> 4 Then - OkButton.Parent = e.TabPage - CancelBtn.Parent = e.TabPage - ApplyButton.Parent = e.TabPage - + BottomPanel.Show() AcceptButton = OkButton CancelButton = CancelBtn + Else + BottomPanel.Hide() End If Select Case e.TabPageIndex @@ -478,7 +471,7 @@ Public Class EditUser tdc.dwCommonButtons = TASKDIALOG_COMMON_BUTTON_FLAGS.TDCBF_OK_BUTTON Or TASKDIALOG_COMMON_BUTTON_FLAGS.TDCBF_CANCEL_BUTTON tdc.pszVerificationText = "Do not show this warning again" - tdc.pszMainIcon = TD_WARNING + tdc.pszMainIcon = TD_WARNING_ICON TaskDialogIndirect(tdc, result, Nothing, verif) @@ -504,7 +497,7 @@ Public Class EditUser group.CommitChanges() item.Remove() Catch ex As UnauthorizedAccessException - ShowPermissionDeniedErr(Handle) + ShowPermissionDeniedErr(Handle, AD.IsRemoteAD()) Return Catch ex As Runtime.InteropServices.COMException If ShowCOMErr(ex.ErrorCode, Handle, ex.Message, UserNameTextBox.Text) = COMErrResult.REFRESH Then @@ -537,6 +530,10 @@ Public Class EditUser e.NewWidth = GroupMembership.Columns(0).Width e.Cancel = True End Sub + + Private Sub ListView1_SizeChanged(sender As Object, e As EventArgs) Handles GroupMembership.SizeChanged + GroupMembership.Columns(0).Width = GroupMembership.Width - 1 + End Sub #End Region Private Sub unlockbtn_Click(sender As Object, e As EventArgs) Handles unlockbtn.Click @@ -545,7 +542,7 @@ Public Class EditUser dsUserp.CommitChanges() unlockbtn.Enabled = userp.IsAccountLocked Catch ex As UnauthorizedAccessException - ShowPermissionDeniedErr(Handle) + ShowPermissionDeniedErr(Handle, AD.IsRemoteAD()) Catch exx As Runtime.InteropServices.COMException If ShowCOMErr(exx.ErrorCode, Handle, exx.Message, UserNameTextBox.Text) = COMErrResult.REFRESH Then AD.RefreshDS() @@ -554,6 +551,9 @@ Public Class EditUser End Sub #Region "Help and information" + Private Sub disabledInfo_Click(sender As Object, e As EventArgs) Handles disabledInfo.Click + UserMustChangePasswordInfo.Show("This option cannot be enabled if either the option ""Password never expires"" is enabled or a smartcard logon is forced.", disabledInfo) + End Sub Private Sub warnChanged(sender As Object, e As EventArgs) Handles UserCantChangePw.CheckedChanged, UserMustChangePwOnNextLogon.CheckedChanged If cfgBool("HideWarningCantchgpasswd") = True Then Return @@ -570,13 +570,13 @@ Public Class EditUser tdc.cbSize = Runtime.InteropServices.Marshal.SizeOf(tdc) tdc.hwndParent = Handle - tdc.pszWindowTitle = "Inaccessible account" - tdc.pszMainInstruction = "User won't be able to log on" + tdc.pszWindowTitle = "Inaccessible account warning" + tdc.pszMainInstruction = "Inaccessible account" tdc.pszContent = "The user's permission to change its password is not granted, but the user must change it before logging in the next time." & vbCrLf & "This will result in an inaccessible account." tdc.dwCommonButtons = TASKDIALOG_COMMON_BUTTON_FLAGS.TDCBF_OK_BUTTON tdc.pszVerificationText = "Hide this warning" - tdc.pszMainIcon = TD_WARNING + tdc.pszMainIcon = TD_WARNING_ICON Dim verif As Boolean diff --git a/lusrmgr/src/PropertyWindows/SetPw.vb b/lusrmgr/src/PropertyWindows/SetPw.vb index c10e076..9822d63 100644 --- a/lusrmgr/src/PropertyWindows/SetPw.vb +++ b/lusrmgr/src/PropertyWindows/SetPw.vb @@ -1,6 +1,6 @@ Public Class SetPw - Dim userp As DirectoryServices.DirectoryEntry - Dim AD As ActiveDirectory + Private userp As DirectoryServices.DirectoryEntry + Private AD As ActiveDirectory Shadows Function Show(user As DirectoryServices.DirectoryEntry, pAD As ActiveDirectory) As DialogResult Label1.Text = "Set password for " & user.Name @@ -27,7 +27,7 @@ Return Catch ex As UnauthorizedAccessException DialogResult = Windows.Forms.DialogResult.None - ShowPermissionDeniedErr(Handle) + ShowPermissionDeniedErr(Handle, AD.IsRemoteAD()) Return End Try diff --git a/lusrmgr/src/PropertyWindows/Times.vb b/lusrmgr/src/PropertyWindows/Times.vb index 2f87156..569593a 100644 --- a/lusrmgr/src/PropertyWindows/Times.vb +++ b/lusrmgr/src/PropertyWindows/Times.vb @@ -1,7 +1,7 @@ Public Class Times Private grid As Dictionary(Of Point, Label) Private indeterminateLabels As List(Of Label) - Private noUser As Boolean + Private noUser, isRemoteAD As Boolean Private userp As DirectoryServices.DirectoryEntry Private bArr As BitArray @@ -27,8 +27,9 @@ Return GetByteArray() End Function - Function EditTimes(user As DirectoryServices.DirectoryEntry) As DialogResult + Function EditTimes(user As DirectoryServices.DirectoryEntry, pIsRemoteAD As Boolean) As DialogResult userp = user + isRemoteAD = pIsRemoteAD bArr = New BitArray(CType(user.IADsU().LoginHours, Byte())) DrawGrid(TimeZoneInfo.Local.BaseUtcOffset.Hours) @@ -251,7 +252,7 @@ userp.CommitChanges() Catch ex As UnauthorizedAccessException DialogResult = Windows.Forms.DialogResult.None - ShowPermissionDeniedErr(Handle) + ShowPermissionDeniedErr(Handle, isRemoteAD) Iusr.LoginHours = backup Return Catch ex As Runtime.InteropServices.COMException @@ -279,13 +280,13 @@ tdc.cxWidth = 220 - tdc.pszWindowTitle = "Warning - Local users and groups" + tdc.pszWindowTitle = "Access times warning" tdc.pszMainInstruction = "Access time restrictions may not be enforced correctly" tdc.pszContent = "The defined access times will prevent the user from logging on," & vbCrLf & "but they may not log off the user as they exceed the limit." & vbCrLf & "You may have to install additional software in order to achieve that." tdc.dwCommonButtons = TASKDIALOG_COMMON_BUTTON_FLAGS.TDCBF_OK_BUTTON tdc.pszVerificationText = "Do not show this warning again" - tdc.pszMainIcon = TD_WARNING + tdc.pszMainIcon = TD_WARNING_ICON Dim verif As Boolean