В Windows поведение по умолчанию - издает раздражающий звуковой сигнал каждый раз, когда в Windows происходит что-то заметное. В результате, когда кто-то отправляет корпоративное электронное письмо через MS Exchange, все компьютеры в моем кабинете один за другим издают звуковой сигнал. Это раздражает и не имеет смысла.
К счастью, звуковой сигнал можно отключить. Кто-то должен:
Устройство "Beep" остановится и больше не будет издавать бесполезный звук.
Однако это решение требует отслеживания каждого компьютера, а затем разговора с его пользователем, что не очень удобно. Диспетчер устройств не позволяет останавливать устройство на другом компьютере.
Я ищу решение, которое может развернуть команда администраторов. У нас есть домен, и администраторы даже автоматически устанавливают программы в масштабах компании. Существуют ли какие-либо средства, позволяющие автоматически остановить устройство "Beep" на всех компьютерах в сети Windows с некоторыми функциями удаленного администрирования?
Используйте GPO для развертывания сценария запуска компьютера, который запускает следующий командный файл
net stop beep
reg add HKLM\System\CurrentControlSet\Services\Beep /v start /t REG_DWORD /d 4 /f
Указание этого значения реестра цифрой «4» эквивалентно установке типа запуска на «отключено».
Отредактировано, чтобы показать метод, который будет работать так, как вы хотите, с одной перезагрузкой.
sc stop beep sc config beep start= demand
В sc
команда опционально принимает имя машины:
sc \\someworkstation stop beep sc \\someworkstation config beep start= demand
Это может быть легко написано сценарием для перебора списка машин:
for %f in (boxen.txt) do ( sc \\%f stop beep sc \\%f blah )
Альтернативный способ удаленного управления сервисами - использовать WMI. Однако я совершенно не знаю, как его использовать. Тем не менее, этот сценарий может работать:
// usage:
// cscript fix.js < list-of-machines.txt
function disable(hostname) {
var inst = GetObject("winmgmts:{impersonationLevel=impersonate}//"+hostname+"/root/cimv2:Win32_Service=\"beep\"");
var input = inst.Methods_("ChangeStartMode").inParameters.SpawnInstance_();
input.StartMode = "Disabled";
return inst.ExecMethod_("ChangeStartMode", input);
}
while (true) {
try { input = WScript.StdIn.ReadLine(); }
catch (e) { break; }
WScript.StdOut.WriteLine("fixing on "+input);
disable(input);
}