windows 10:動的に作成されたレジストリキーのレジストリ値を変更する
こんにちは、
SCCM OSDを介してイメージングしている多くのWindows 10
ラップトップでオンボードマイクを無効にする方法が必要です.多くの調査の後、これを行う最善の方法は、マイクを有効にするか無効にするかを制御するレジストリ値を変更することです.
Devconを使用してマイクを無効にしてみました.コマンドを実行すると、コントロールパネルでマイクが無効として表示されますが、機能は継続します.コントロールパネルで「サウンド」を選択し、そこから無効にするとうまくいきますが、
これを自動化する必要があるため、レジストリ.私が抱えている問題は、マイクの値が保存されているレジストリキーが、ラップトップの構築時にランダムに生成されることです.
変更が必要なキーは次の場所に保存されています:
HKLM\SOFjpARE\Microsoft\Windows\CurrentVersion\MMDevices\Audio\Capture\
DeviceState=DWord
マイクを無効にするには、DeviceStateのデータを16進数で10000001、10進数で268435457に設定する必要があります.
これを行う最善の方法は、Powershellを使用してレジストリのキーを検索し、それを変数に割り当てて、値を更新することです.キーを見つけるための基準は、次の値とデータによる可能性があります.
HKLM\SOFjpARE\Microsoft\Windows\CurrentVersion\MMDevices\Audio\Capture\
値:a45c254e-df1c-4efd-8020-67d146a850e0}、2=REG_SZ
データ:マイクアレイ
残念ながら、基本的なコマンドを実行する以外にpowershellについてはほとんど知りません.これをスクリプトで機能させる方法もわかりません.誰かがこれを理解するのを手伝ってくれますか、または誰かがマイクを無効にする方法のより良いアイデアを持っているなら、私は聞いて満足します.
返信リスト(回答:11)
レジストリに値をプラグインしても、ユーザーがログオフして再度ログオンするまで効果がないことがよくあります.さらに、言及するキーと値はマシンごとに異なります.私のインストールでは、それらはかなり異なって見えます.
nircmd.exe(またはnircmdc.exe)をご覧になることをお勧めします.それはコーディングの努力なしにあなたが望むことをするかもしれません.これが失敗した場合は、正確な仕様に従ってスクリプトを作成する準備ができていますが、いくつかのテストを手動で行った後でのみ
異なるPC.
応答1# ->にスキップ2 #mgorski???????????.
?????????????????.?????????????????.??????????nircmd?????????????????????????????.???????????????????????????????????
?????.???????????????????????????????:
- ???????????????????????????????????????????.????RegState???DeviceState??????1(?????)??10000001(??)???????
??.- devcon????????????????????.
- ?????????>????>????????????????????>?????>?????????????????????????????DeviceState?10000001??????.???????????????????????????.
???????.- DeviceState????10000001????????????????????????????.?????????????????????????????????????????????.
- ??????????????????????????????HKLM\SOFjpARE\Microsoft\Windows\CurrentVersion\MMDevices???.\Audio\Capture\{af45fadf-1fb3-4576-bd59-48ab1eb861b5}?????????????????????GUID?{d4ce43de-9eb9-4714-977a-3482b2e74460.}????????.
???????????????????????????????????????.- ???????????????????????????????????{a45c254e-df1c-4efd-8020-67d146a850e0}?2????????????HKLM\SOFjpARE\Microsoft\Windows\CurrentVersion\MMDevices\Audio\Capture\
\Properties?????Microphone Array?????????.
?????????????????????.???
応答2# ->にスキップ3 #Frederi以下のスクリプトが生成するものをご覧ください.指定したレジストリキーを再帰的に調べ、見つかったと思われる一意の値を探します.次に、自動的に開くデスクトップファイルに結果を記録します.スクリプトを保存する必要があります
.vbs拡張子.DisableMike.vbsとして.
応答3# ->にスキップ4 #mgorski???????????????????????.
Capture\{2b3a81a2-0ec5-41ba-8870-1b802a16b44f}\Properties {a45c254e-df1c-4efd-8020-67d146a850e0}?2 8
Capture\{d4ce43de-9eb9-4714-977a-3482b2e74460}\Properties {a45c254e-df1c-4efd-8020-67d146a850e0}?2 Realtek Audio 1
Capture\{f5f7d5e1-50f9-4ca7-a920-97b1122e8c93}\Properties {a45c254e-df1c-4efd-8020-67d146a850e0}?2 Realtek Audio??????????????Microphone Array?????????????????????????????????.????????????????????????????????????????????????????????????.
応答5# ->にスキップ6 #mgorski私は関係のないものをテストしていたので、昨夜テストマシンのイメージを再作成しました.スクリプトを再実行しましたが、次の結果が返されました:
Capture\{1b5e524e-ca5f-456a-bb2f-55fe53a5cfbe}\Properties {a45c254e-df1c-4efd-8020-67d146a850e0}、2 1
Capture\{4004cda5-eaec-4f01-aebf-71adf725b31b}\Proties {a45c254e-df1c-4efd-8020-67d146a850e0}、2 Realtek Audio 268435457
Capture\{cf24af56-9356-46d2-a3f8-d6fede59548c}\Properties {a45c254e-df1c-4efd-8020-67d146a850e0}、2 Realtek Audio関連するレジストリキーをエクスポートして、One Driveに投稿しました.リンクは以下のとおりです.
応答6# ->にスキップ7 #Frederiスクリプトは正しいキー、値、およびデータを読み取りましたが、予想していたすべてのフィールドを出力しませんでした.このバリアントを試してください:
'
-
'指定した「キー」と「値」の「DeviceState」レジストリデータを抽出します
'23.4.2019 FNL
'
-
sMainKey="SOFjpARE\Microsoft\Windows\CurrentVersion\MMDevices\Audio\Capture "
MyValue="{a45c254e-df1c-4efd-8020-67d146a850e0}、2 "The script looks for this value
Dim HKLM、oFSO、oWshShell、oReg、sLog、 oLog、iState、sName、sMike、sNameValue、sMikeValue
Prepare
ProcessKey(sMainKey)
oLog.Close
oWshShell.Run "notepad.exe" ""&sLog& "" ""、1 、False
'
-
'指定されたレジストリキーを再帰的に処理します
'
-
Sub ProcessKey(sKey)
oReg.EnumKey HKLM、sKey、aSubKeys
If IsArray(aSubKeys)Then
For Each sSubkey In aSubKeys
CheckValues sKey& "\"&sSubkey
ProcessKey sKey& "\"&sSubkey
Next
End If
End Sub
'
-
'名目上のレジストリキーの下のすべての値を調べます
'MyValueに一致するものをログに記録します
'
-
Sub CheckValues(sCurrentKey)
oReg.EnumValues H KLM、sCurrentKey、aValues、aTypes
If IsArray(aValues)Then
For i=0 To UBound(aValues)
Select Case aValues(i)
Case "DeviceState"
iState=oWshShell.RegRead( "HKLM \"&sCurrentKey& "\DeviceState")
Case MyValue
sName=oWshShell.RegRead( "HKLM \"&sCurrentKey& "\"&sNameValue)
sMike=oWshShell.RegRead ( "HKLM \"&sCurrentKey& "\"&sMikeValue)
Log.WriteLine Mid(sCurrentKey、59)& ""&aValues(i)_
& "、"&sName& "、"&sMike & "、State=$"&Hex(iState)
End Select
Next
End If
End Sub
'
-
' Prepare a few things
'
-
Sub Prepare
HKLM =&H80000002
Set oWshShell=CreateObject( "Wscript.shell")
Set oFSO=CreateObject( "scripting.FileSystemObject")
Set oReg=GetObject( "Winmgmts:{impersonationLevel=impersonate}!\\.\root\defaul t:StdRegProv ")
sLog=oWshShell.ExpandEnvironmentStrings("%UserProfile%\Desktop\Log.txt ")
Set oLog=oFSO.CreateTextFile(sLog、True)
sNameValue="{b3f8fa53-0004-438e-9003-51a46e139bfc}、6 "
sMikeValue="{a45c254e-df1c-4efd-8020-67d146a850e0}、2 "
End Sub
応答7# ->にスキップ8 #mgorski最後のスクリプトを実行した結果は以下のとおりです.
apture\{1b5e524e-ca5f-456a-bb2f-55fe53a5cfbe}\Properties {a45c254e-df1c-4efd-8020-67d146a850e0}、2、Realtek Audio、Microphone Array、State=$ 1
apture\{4004cda5-eaec-4f01-aebf-71adf725b31b}\Properties {a45c254e-df1c-4efd-8020-67d146a850e0}、2、Realtek Audio、Stereo Mix、State=$ 10000001
apture\{cf24af56-9356-46d2-a3f8-d6fede59548c}\Properties {a45c254e-df1c-4efd-8020-67d146a850e0}、2、Realtek Audio、Jack Mic、State=$ 8
onbordmic.admx??????????????????????????????? ??? onboardmic.adml
??????????????.admx?.adml??????????
???????????2????????????????????????????????????????????????????
???????????????????????????google???
沈黙が長引いていることを考えると、未解決の問題の90%を解決しているにもかかわらず、このプロジェクトに興味を失った印象を受けます.