Я пытаюсь отключить микрофон из cmd или c#.
Я пробовал использовать devcon.exe, но он отключает устройство в диспетчере устройств, но не в свойствах звука.
Я попробовал записать в реестр:
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\MMDevices\Audio\Capture\{6f512f63-a7a0-4f4f-b24c-73dd352b6709}" /v DeviceState /d 0x10000001 /t Reg_DWord /f
Даже в режиме повышенных привилегий в cmd я получаю ошибку:
ERROR: Access is denied.
Я прочитал, что это связано с тем, что реестр защищен, и мне придется стать владельцем реестра, прежде чем применять это изменение.
Когда я использую .reg-файл:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\MMDevices\Audio\Capture\{6f512f63-a7a0-4f4f-b24c-73dd352b6709}]
"DeviceState"=dword:0x10000001
Вроде бы все нормально, ошибок не выводится, но реестр не изменяется.
Я также пытался запустить вышеуказанные команды из службы Windows (локальной системы), но безуспешно.
Какие еще способы можно попробовать отключить устройства воспроизведения/записи программным путем?
EDIT:
Я немного изменил reg-файл. Я использовал Procmon.exe, чтобы проверить, что меняется, когда я нажимаю «Отключить», и теперь reg-файл выглядит так:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\MMDevices\Audio\Capture\{6f512f63-a7a0-4f4f-b24c-73dd352b6709}]
"DeviceState"=dword:10000001
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\MMDevices\Audio\Capture\{6f512f63-a7a0-4f4f-b24c-73dd352b6709}\FxProperties]
"{00123682-6AD4-4737-98CC-6092E12453CC},0"=dword:00000000
"{10786EAC-45AF-49ea-9182-4B994BD075E8},1"=dword:00000003
"{10786EAC-45AF-49ea-9182-4B994BD075E8},0"=hex:41,00,00,00,01,00,00,00,00,00,\
00,00,3c,4f,01,00,00,00,00,00,08,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
\\....
Когда я применил этот .reg-файл как пользователь (нажав на файл), записывающее устройство отключилось правильно. У меня теперь два вопроса:
1. Кажется, это очень грязное решение, безопасно ли использовать этот reg-файл?
2. Я не могу применить этот reg-файл с помощью Windows Service, я предполагаю, что эти реестры заблокированы учетной записью пользователя или чем-то еще, верно?