是否有可能停止 Windows 网络中所有计算机上的“Beep”设备?

是否有可能停止 Windows 网络中所有计算机上的“Beep”设备?

在 Windows 上,默认行为是每当 Windows 发生值得注意的事情时都会发出恼人的“哔哔”声。结果是,当有人通过 MS Exchange 发送全公司电子邮件时,我办公室周围的所有计算机都会逐一发出哔哔声。这很烦人,而且毫无意义。

幸运的是,蜂鸣声可以关闭。有人必须:

  • 打开“设备管理器”,
  • 选择“查看 -> 显示隐藏的设备”,
  • 在“非 Pug 和 Play 设备”节点中找到“Beep”设备,
  • 打开其属性,转到“驱动程序”选项卡,
  • 将“启动类型”设置为“已禁用”并
  • 点击“停止”。

“哔”装置将停止并且不再产生无用的声音。

但是,此解决方案需要跟踪每台计算机,然后与其用户沟通,这并不方便。设备管理器不允许停止另一台计算机上的设备。

我正在寻找一种可以由管理员团队部署的解决方案。我们有一个域,管理员甚至会自动在公司范围内安装程序。是否有任何方法可以自动停止 Windows 网络中所有具有某些远程管理功能的计算机的“Beep”设备?

答案1

使用 GPO 部署计算机启动脚本,该脚本运行以下批处理文件

net stop beep
reg add HKLM\System\CurrentControlSet\Services\Beep /v start /t REG_DWORD /d 4 /f

用“4”戳该注册表值,相当于将启动类型设置为“禁用”。

经过编辑以显示一种只需一次重启即可按您需要执行的方法。

答案2

sc 停止蜂鸣
sc config 蜂鸣启动=需求

sc命令可选择接受机器名称:

sc \\someworkstation 停止蜂鸣
sc \\someworkstation config beep start=需求

这可以很容易地编写脚本来循环遍历机器列表:

对于(boxen.txt)中的%f,执行(
  sc \\%f 停止蜂鸣
  sc \\%f 废话

远程控制服务的另一种方法是使用威盛。但是,我完全不知道它应该如何使用。不过,这个脚本可能有效:

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

相关内容