У нас есть групповая политика, которая заставляет рабочие станции блокироваться через X минут. Но время от времени я хотел бы приостановить действие закона об ОГП. У меня уже есть крошечный скрипт Auto-It, который щелкает Control Key каждые две минуты, и я просмотрел изменения реестра, которые необходимо было бы внести, чтобы предотвратить блокировку менее навязчивым для пользователя способом. Не имея времени на такие усилия, я подумал, что спрошу замечательное сообщество serverfault, сталкивался ли кто-нибудь с утилитой (желательно с открытым исходным кодом), которая предотвратила бы блокировку рабочей станции?
Спасибо
Приведенный ниже файл REG отключает хранитель экрана. Включая хранитель экрана Windows по умолчанию, который всегда блокирует экран и активируется, когда для заставки пользователя установлено значение «нет».
Чтобы победить Active Directory, эти настройки должны выполняться каждый раз при обновлении AD и до истечения времени ожидания следующей заставки.
Оказывается, я просто боролся с экранной заставкой по умолчанию, и мне нужно было только удалить клавишу SCRNSAVE, поэтому я не нашел хорошего способа постоянно вносить эти изменения.
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Control Panel\Desktop]
"ScreenSaveActive"="0"
"ScreenSaverIsSecure"="0"
"SCRNSAVE.EXE"=-
Я воспользовался возможностью, чтобы немного расширить отличный ответ Натана Хартли, создав сценарий Powershell, который очищает настройку ScreenSaveActive каждые 10 секунд. Тривиально сделать в одной строке, но мне, очевидно, пришлось чрезмерно усложнить его и дать ему красивые индикаторы выполнения для времени ожидания и т.д.
$IntervalSeconds = 10
$IntervalMilli = $IntervalSeconds * 1000
$counter = 0
$LastWrite = ''
$StartTime = get-date
$FudgeMilli = 20
while ($true) {
$counter++
$LastWrite = Get-Date -uformat '%T'
Set-ItemProperty -path 'HKCU:\Control Panel\Desktop' -Name 'ScreenSaveActive' -Value 0
Write-Progress -id 0 -Activity "No Screen is Safe" -PercentComplete $($Counter % 100) -Status "Last Write: $($LastWrite) Write Count: $($Counter) Elapsed: $($($(get-date) - $StartTime).ToString())"
for($i = 1; $i -le 100; $i++) {
[INT] $MilliSecondsLeft = $(($IntervalMilli - ($i * $intervalMilli/100)))
[INT] $SecondsLeft = ($MilliSecondsLeft * .001)
$PercentComplete = (($i * $intervalMilli/100)/$IntervalMilli) * 100
Write-Progress -id 1 -ParentId 0 -Activity "Lying in wait for $($IntervalSeconds) Seconds" -status 'ZZZzzzz...' -PercentComplete $PercentComplete -SecondsRemaining $SecondsLeft
Write-Progress -id 0 -Activity "No Screen is Safe" -PercentComplete $($Counter % 100) -Status "Last Write: $($LastWrite) Write Count: $($Counter) Elapsed: $($($(get-date) - $StartTime).ToString())"
start-sleep -Milliseconds $($($IntervalMilli / 100) - $FudgeMilli)
}
Write-Progress -id 1 -ParentId 0 -Activity "Lying in wait for $($IntervalSeconds) Seconds" -status 'Snerkt!' -PercentComplete 100 -Completed
}
Он не выполняет точное количество секунд (поэтому здесь встроен фактор выдумки, чтобы приблизить интервал времени к реальности), и я не тратил много времени на оптимизацию каждой последней детали.
Надеюсь, кто-нибудь найдет это полезным в будущем.
GPO существуют именно для этого: принуждать параметры конфигурации на компьютерах домена. Они были бы совершенно бесполезны, если бы их можно было избежать.
Если вы не можете изменить политику и / или другие параметры домена (OU учетной записи пользователя, с которой вы входите в систему, и т. Д.), Вы ничего не можете сделать, кроме как перемещать мышь или нажимать клавиши. Единственный вариант - войти на рабочую станцию, используя локальную учетную запись пользователя, к которой не применяются пользовательские политики домена (включая политики хранителей экрана).
Предполагая, что вы позволяете пользователям выбирать, какую заставку они могут использовать, вы можете временно выбрать «нет» в качестве заставки, и рабочая станция не будет блокироваться.