Назад | Перейти на главную страницу

Можно ли остановить устройство «Beep» на всех компьютерах в сети Windows?

В 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);
}