Запретить хранение в документах и ​​настройках аккаунта (windows)

Есть ли способ запретить локальной учетной записи на компьютере с Windows XP хранить какие-либо данные в папке документов и настроек?

Машина преимущественно используется в домене и является базовым образом. Когда создается новый экземпляр образа, использование локальной учетной записи позволяет добавлять / удалять машину из домена. Было бы неплохо, чтобы эта локальная учетная запись не создавала для себя папку документов и настроек...

4 ответа

Решение

... Правильно, я не понял другого ответа, но из комментариев, я думаю, что я делаю сейчас.

Посмотрите на раздел Развертывание на Technet. Существует целый набор ресурсов, которые помогут вам.

Я бы порекомендовал получить Microsoft Deployment Toolkit и создать образ, который будет развертывать окна, предварительно установить все программное обеспечение и присоединить компьютер к домену в настройках Windows, поэтому вход в систему не требуется.

Наконец, если это не работает для вас, вы можете попытаться войти в систему в любом случае, делая то, что вам нужно, и затем создать раздел реестра, который будет запускать однократную запись для сценария при запуске, который может удалить все элементы в c:\ Documents and settings - только что нашел это, но я не могу ручаться за это, так как я не использовал его - http://www.wisesoft.co.uk/scripts/vbscript_delete_local_profiles.aspx

Microsoft также создает инструмент, который удаляет все локальные учетные записи пользователей, но я не могу его найти: я думаю, что он был в пакете поддержки, если я его найду, я отредактирую этот ответ.

Если вы используете это для клонирования на многие компьютеры и используете SysPrep, вы можете выполнить команду RunOnce в конце SysPrep, чтобы просто удалить локальный профиль при первой загрузке. Это должно оставить базовое изображение в значительной степени нетронутым, и в Docs & Settings ничего не будет.

Я действительно не уверен, что это возможно. Когда пользователь входит в систему, Windows необходимо где-то хранить всю информацию, которая позволяет пользователю войти в систему. Кто-то уже упомянул групповую политику, но это бесполезно для вас, потому что этот логин будет означать присоединение компьютера к домену, что будет до того, как групповая политика сможет оказать какое-либо влияние.

Лучше всего будет запускать сценарий удаленно после того, как пользователь выйдет из системы (после того, как он присоединит компьютер к домену). Этот сценарий будет циклически проходить через профили пользователей на удаленном компьютере (ПК, только что подключенный к домену), проверяя SID. Если он находит соответствующий SID, он удаляет профиль.

Я написал очень похожий сценарий в прошлом году. Это на работе. Завтра отвечу сценарием (когда я на работе)

ОБНОВИТЬ:

Вот сценарий, о котором я говорил. Он нуждался в серьезном капитальном ремонте, так как выполнял все виды междоменных фанки из-за среды, в которой я нахожусь.

Если у вас возникают проблемы с разрешениями, измените разделы UserName = "" и Password = "" на учетную запись с правами локального администратора на целевом ПК.

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 

Если это базовый образ, люди на самом деле не должны использовать его для повседневного использования, если только вы не хотите предотвратить запись данных при развертывании образа.

Можно запретить людям писать и сохранять файлы с помощью групповой политики и ограничений, но у вас могут возникнуть проблемы, когда дело доходит до данных приложения, поскольку почти все, что вы запускаете в Windows, требует этого.

Вы на самом деле не предоставляете достаточно подробных сведений об окружающей среде, поэтому я просто предполагаю, что вы можете взглянуть на Windows SteadyState, который позволит другим использовать этот компьютер, а затем восстановить его в исходное состояние.

Другие вопросы по тегам