阻止用户本地登录

阻止用户本地登录

我如何才能阻止用户本地登录并强制他们登录域。有些用户仍在本地登录,这是我们最近转换之前使用的。我需要立即停止这种情况。

域控制器是 Windows 2008 Server,每个工作站(除一个是 Windows 7 Pro 外)都运行 Windows XP SP3。

答案1

处理此问题的最佳方法是从受影响的客户端计算机中删除本地用户帐户。如果用户知道这些计算机上的本地“管理员”密码,请更改它。

但是,如果用户的域帐户在客户端计算机上具有“管理员”权限,他们就可以创建更多本地用户帐户。

如果您不想手动执行此工作,您可以通过启动脚本执行此操作。以下是删除本地用户帐户的脚本:

Option Explicit 

Dim dictUsersToIgnore, objNetwork 
Dim colSourceAccounts, objSourceUser

' Debugging 
Const DEBUGGING = True 

' Source and destination computers 
Const SOURCE_COMPUTER = "." 

' Constants for comparison of accounts to ignore list 
Const MATCH_EXACT = 1 
Const MATCH_LEFT = 2 

' Accounts to ignore during copying 
Set dictUsersToIgnore = CreateObject("Scripting.Dictionary") 
dictUsersToIgnore.Add "SUPPORT_", MATCH_LEFT 
dictUsersToIgnore.Add "IUSR_", MATCH_LEFT 
dictUsersToIgnore.Add "IWAM_", MATCH_LEFT 
dictUsersToIgnore.Add "Administrator", MATCH_EXACT 
dictUsersToIgnore.Add "Guest", MATCH_EXACT 
dictUsersToIgnore.Add "HelpAssistant", MATCH_EXACT 
dictUsersToIgnore.Add "ASPNET", MATCH_EXACT 

' Should this account be ignored 
Function IgnoreObject(Name, dictNames) 
    Dim strToIgnore 

    IgnoreObject = False 

    For Each strToIgnore in dictNames 

        ' Match Exact 
        If (dictNames.Item(strToIgnore) = MATCH_EXACT) and (UCase(Name) = UCase(strToIgnore)) Then 
                IgnoreObject = True 
                Exit Function 
        End If 

        ' Match left 
        If (dictNames.Item(strToIgnore) = MATCH_LEFT) and (Left(UCase(Name), Len(strToIgnore)) = UCase(strToIgnore)) Then 
                IgnoreObject = True 
                Exit Function 
        End If 

    Next' strToIgnore 
End Function 

Set objNetwork = CreateObject("Wscript.Network") 

' Get accounts on source computer and loop through them, copying as necessary 
Set colSourceAccounts = GetObject("WinNT://" & SOURCE_COMPUTER) 
colSourceAccounts.Filter = Array("user") 
For Each objSourceUser In colSourceAccounts 

    If IgnoreObject(objSourceUser.Name, dictUsersToIgnore) = False Then 
        If (DEBUGGING) Then WScript.Echo "Deleting account: " & objSourceUser.Name 
        colSourceAccounts.Delete "user", objSourceUser.Name 
    Else 
        If (DEBUGGING) Then WScript.Echo "Ignoring account: " & objSourceUser.Name 
    End If 
Next ' objSourceUser 

将不应删除的任何用户名添加到 dictUsersToIgnore 列表中。MATCH_EXACT 表示用户名完全匹配。MATCH_LEFT 表示仅匹配用户名的最左边部分(即,假设名称匹配后有一个“*”)。

此脚本适合用作 AD 启动脚本。请谨慎选择其范围——如果您在错误的地方运行它,它真的会毁了您的一天。

答案2

您可以使用限制组Active Directory 组策略的功能。您可能应该做的第二件事是保留本地管理员帐户,这也是可能的 vi GP。

答案3

明确定义 GPO“拒绝本地登录”以阻止您想要拒绝的所有用户,并将其应用于他们所在的 OU...这可能会对您的 AD 模式造成一些影响,但这应该可以解决您的所有问题...

相关内容