1

On Windows the default behavior it to make an annoying "beep" sound every time Windows things something notable happened. The result is that when someone send a company-wide email via the MS Exchange all computers around my cubicle beep one by one. This is annoying and makes no sense.

Luckily beeping can be shut off. Someone has to:

  • open the "Device Manager",
  • select "View -> Show hidden devices",
  • find the "Beep" device in "Non-Pug and Play Devices" node,
  • open its properties, go to the "Driver" tab,
  • set "startup type" to "Disabled" and
  • click "Stop".

The "Beep" device will stop and no longer produce the useless sound.

This solution however requires tracking every computer and then talking to its user which is not very convenient. Device Manager doesn't allow stopping a device on another computer.

I'm looking for a solution that can be deployed by the administrators team. We have a domain and the administrators even install the programs company-wide automatically. Are there any means to stop the "Beep" device an all computers in the Windows network with some remote-administration features automatically?

sharptooth
  • 2,727
  • 4
  • 32
  • 38

2 Answers2

2

Use GPO to deploy a computer start up script which runs the following batch file

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

Poking that registry value with a '4', is the equivalent of setting the start up type to 'disabled'.

Edited to show a method that will do as you want with a single reboot.

Bryan
  • 7,538
  • 15
  • 68
  • 92
  • Well, I could write a program that would edit the registry. I can use GPO to run my program can't I? Then it would only require one reboot. – sharptooth Apr 05 '10 at 10:13
  • You could, but writing software to do this is a little overkill. I've modified my answer slightly so that it works with a single reboot. – Bryan Apr 05 '10 at 10:19
  • Why would it need a reboot now? It should stop the device immediately (as if I clicked "Stop" in the Device Manager) and also add a registry entry. – sharptooth Apr 05 '10 at 12:46
  • The way I've suggested that you do this, (i.e. via a computer start up script), is only executed as the computer boots. You could look at running the script on all your PCs. It's possible to do with some clever batch scripts that query the computers in AD, but unless you are familiar with GNU Utilities for Win32 (http://unxutils.sourceforge.net/) or more specifically xargs (http://en.wikipedia.org/wiki/Xargs), then the computer start up script would be much easier. – Bryan Apr 05 '10 at 16:34
  • An alternative might be to use powershell, but I can't help there I'm afraid. – Bryan Apr 05 '10 at 16:35
1
sc stop beep
sc config beep start= demand

The sc command optionally accepts a machine name:

sc \\someworkstation stop beep
sc \\someworkstation config beep start= demand

This could be easily scripted to loop over a list of machines:

for %f in (boxen.txt) do (
  sc \\%f stop beep
  sc \\%f blah
)

An alternative way of remotely controlling services is to use WMI. However, I have completely no idea about how it is supposed to be used. Still, this script may work:

// 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);
}
user1686
  • 8,717
  • 25
  • 38