防止在文档和帐户设置中存储(Windows)

防止在文档和帐户设置中存储(Windows)

有没有办法防止 Windows XP 计算机上的本地帐户在文档和设置文件夹中存储任何数据?

该机器主要用于域,并且是基础映像。当创建映像的新实例时,使用本地帐户允许将机器添加到域中/从域中删除。如果该本地帐户不为自己创建文档和设置文件夹就好了...

答案1

... 是的,我在其他回答中不明白,但从评论来看,我想我现在明白了。

看着那(这Technet 上的部署部分。有大量资源可以帮助您。

我建议的是Microsoft 部署工具包并构建一个将部署 Windows 的图像,预先安装所有软件并将 PC 加入 Windows 设置中的域,因此无需登录。

最后,如果这对您不起作用,您可能仍想尝试登录,执行您需要执行的操作,然后创建一个注册表项,该注册表项将在启动时为脚本运行一次,该脚本可以删除 c:\documents and settings 中的所有项目 - 刚刚发现这个,但我不能保证它,因为我没有使用它 -http://www.wisesoft.co.uk/scripts/vbscript_delete_local_profiles.aspx

微软也制作了一个删除所有本地用户帐户的工具,但我找不到它:SI 认为它在支持包中,如果我找到它,我会编辑这个答案。

答案2

如果您使用它来克隆到多台计算机,并且使用 SysPrep,则可以在 SysPrep 结束时发出 RunOnce 命令,以便在首次启动时删除本地配置文件。这应该会使基本映像保持原样,Docs & Settings 中没有任何内容。

答案3

如果这是一个基础图像,人们真的不应该将其用于日常用途,除非你想防止在部署图像时写入数据。

可以通过组策略和限制来阻止人们写入和保存文件,但是在应用程序数据方面可能会遇到问题,因为几乎所有在 Windows 中运行的所有内容都需要这样做。

你并没有真正提供足够的环境细节,所以我只是在这里假设,但你可能需要看看Windows SteadyState这将允许其他人使用这台电脑然后将其恢复到原始状态。

答案4

我真的不确定这是否可行。当用户登录时,Windows 需要某个地方来存储使用户登录能够正常运行的所有信息。有人已经提到了组策略,但这对你没有用,因为此登录将使计算机加入域,这将是组策略可以产生任何影响。

最好的办法是在用户注销后(将计算机加入域后)远程运行一个脚本。此脚本将循环检查远程计算机(刚加入域的 PC)上的用户配置文件,检查 SID。如果找到匹配的 SID,它将删除该配置文件。

我去年写过一个非常相似的脚本。它在工作中。明天我会用脚本回答(当我在工作时)

更新:

这是我之前提到的脚本。由于我所处的环境,它需要进行相当大的修改,因为它会执行各种跨域操作。

如果您遇到权限问题,请更改用户名 = “”密码 = “”部分到具有目标 PC 的本地管理员权限的帐户。

Option Explicit
On Error Resume Next

Dim strComputer
Dim objWMIService
Dim propValue
Dim objItem
Dim SWBemlocator
Dim UserName
Dim Password
Dim colItems
Dim strMessage
Dim deleteResponse

strComputer = ""
UserName = ""
Password = ""
strMessage = ""

strComputer = InputBox("Please enter the FQDN of the new computer:")

If strComputer = "" Then
    WScript.quit
End If

If Not Ping (strComputer) Then
    MsgBox "The computer (" + strComputer + ") is not responding to ping - exiting"
    WScript.quit
End if

Set SWBemlocator = CreateObject("WbemScripting.SWbemLocator")
Set objWMIService = SWBemlocator.ConnectServer(strComputer,"root\CIMV2",UserName,Password)
Set colItems = objWMIService.ExecQuery("Select * from Win32_UserProfile",,48)
For Each objItem in colItems
    strMessage = ""
    If not objItem.LastDownloadTime = "" Then 
        strMessage = strMessage + "LastDownloadTime: " & left(objItem.LastDownloadTime,8) + Chr(10) + Chr(13)
    End If

    If Not objItem.LastUploadTime = "" Then
        strMessage = strMessage + "LastUploadTime: " & left(objItem.LastUploadTime,8) + Chr(10) + Chr(13)
    End if

    if not objItem.LastUseTime = "" then
        strMessage = strMessage + "LastUseTime: " & left(objItem.LastUseTime,8) + Chr(10) + Chr(13)
    End If

    If Not objItem.Loaded  = "" Then
        strMessage = strMessage + "Loaded: " & objItem.Loaded + Chr(10) + Chr(13)
    End If

    If not objItem.LocalPath = "" then
        strMessage = strMessage + "LocalPath: " & objItem.LocalPath + Chr(10) + Chr(13)
    End If

    if not objItem.RefCount = "" then
        strMessage = strMessage + "RefCount: " & objItem.RefCount + Chr(10) + Chr(13)
    End If

    if not objItem.RoamingConfigured = "" then
        strMessage = strMessage + "RoamingConfigured: " & objItem.RoamingConfigured + Chr(10) + Chr(13)
    End If

    if not objItem.RoamingPath = "" then
        strMessage = strMessage + "RoamingPath: " & objItem.RoamingPath + Chr(10) + Chr(13)
    End If

    if not objItem.RoamingPreference = "" then
        strMessage = strMessage + "RoamingPreference: " & objItem.RoamingPreference + Chr(10) + Chr(13)
    End If

    if not objItem.SID = "" then
        strMessage = strMessage + "SID: " & objItem.SID + Chr(10) + Chr(13)
    End If

    if not objItem.Special = "" then
        strMessage = strMessage + "Special: " & objItem.Special + Chr(10) + Chr(13)
    End If

    if not objItem.Status = "" then
        strMessage = strMessage + "Status: " & objItem.Status + Chr(10) + Chr(13)
    End If

    strMessage = strMessage + Chr(10) + Chr(13) + Chr(10) + Chr(13) + "Do you wish to delete this profile?"

    deleteResponse = MsgBox (strMessage,35,"Profile Found")

    Select Case deleteResponse
        Case 6
            Err.Clear
            objItem.Delete_
            If Err.Number = 0 Then 
                MsgBox("Profile " & objitem.localpath & " on " & strComputer & " deleted")
            Else
                MsgBox("Profile " & objitem.localpath & " on " & strComputer & " NOT deleted - Is user logged in?")     
            End If
    End Select

Next

Function Ping(strHost)

    dim objPing, objRetStatus

    set objPing = GetObject("winmgmts:{impersonationLevel=impersonate}").ExecQuery _
      ("select * from Win32_PingStatus where address = '" & strHost & "'")

    for each objRetStatus in objPing
        if IsNull(objRetStatus.StatusCode) or objRetStatus.StatusCode<>0 then
            Ping = False
        else
            Ping = True
        end if
    Next
End Function 

相关内容