有没有办法来防止在Windows XP计算机上的本地帐户存储在文档和设置文件夹中的任何数据?
该机器主要用于一个领域,是一个基本的形象。 当创build图像的新实例时,使用本地帐户允许将机器添加到域或从域中删除。 这将是很好的本地帐户不为自己创build一个文件和设置文件夹…
…对,我不明白我的其他答案,但从评论,我想我现在就做。
查看Technet上的“ 部署”部分 。 有一大堆资源可以帮助你。
我会推荐的是获得Microsoft部署工具包,并build立一个图像,将部署Windows,预先安装所有的软件,并将电脑连接到Windows的设置域,所以没有login要求。
最后,如果这不适合你,你可能想要尝试login,做你需要做的事情,然后创build一个registry项,一旦运行脚本就启动一次,可以删除所有项目ç:\文件和设置 – 刚刚发现这一点,但我不能担保,因为我没有使用它 – http://www.wisesoft.co.uk/scripts/vbscript_delete_local_profiles.aspx
微软还制作了一个删除所有本地用户帐户的工具,但是我找不到它:我认为它是在一个支持包中,如果我find了,我会编辑这个答案。
如果您使用这种方法克隆到多台计算机,并使用SysPrep,则可以在SysPrep的末尾发出RunOnce命令,以便在首次引导时删除本地configuration文件。 这应该使基本图像非常原始,没有在文档和设置。
如果这是一个基本的图像,人们真的不应该使用它的日常使用,除非你正在谈论的是要防止数据被部署图像时被写入。
可以通过组策略和限制来防止人们编写和保存文件,但是当涉及到应用程序数据时,可能会遇到问题,因为几乎所有在Windows中运行的东西都需要这样做。
你没有给出足够的细节,所以我只是在这里假设,但你可能想看看Windows SteadyState ,这将允许其他人使用这台电脑,然后恢复到原来的状态。
我真的不确定这是可能的。 当用户login时,Windows需要在某处存储使用户login才能正常工作的所有信息。 有人提到了组策略,但是这对你来说是没有用的,因为这个login将会把机器join域,这在组策略之前可能会有任何作用。
最好的办法就是在用户注销之后远程运行一个脚本(在他们将机器join域之后)。 该脚本将通过远程计算机上的用户configuration文件(刚刚join域的PC)循环检查SID。 如果find匹配的SID,则删除该configuration文件。
去年我写了一个非常相似的脚本。 这是在工作。 明天回答脚本(当我在工作时)
更新:
这是我正在谈论的脚本。 由于我所处的环境,它正在进行各种各样的跨域funkiness,因此需要进行相当大的修改。
如果您遇到权限问题,请将UserName =“”和Password =“”部分更改为对目标PC具有本地pipe理权限的帐户。
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