私はラップトップをデスクトップとして頻繁に使用しますが、その時間の約75%です。デスクトップセットアップとして、モニター、スピーカー、キーボード、マウス、ウェブカメラが外部接続されています。後者の3つはUSB経由です。
次に、統合されたWebカメラが顔認識やビデオチャットに使用できなくなるように配置されますが、私が使用するプログラムの中には、デフォルトのWebカメラを選択する方法を提供しないものがあります。
そのため、ユーティリティやスクリプトなどを使用して、外部のWebカメラが接続されているときに組み込みのWebカメラを自動的に無効にする方法があるかどうか疑問に思いました。
(それが役立つ場合は、Asus Zenbook PrimeUX32VDでWindows7を使用しています。)
提案されたソリューションは、バッチスクリプトとタスクスケジューリング技術を使用してこれらすべてを処理します。実際にジューシーな部分にジャンプする前に、いくつかのことを行う必要があります。
DevCon は、デバイスに関する詳細情報を表示するコマンドラインツールであり、コマンドラインからデバイスを検索して操作できます。 DevConは、ローカルコンピューター上のデバイスを有効化、無効化、インストール、構成、および削除し、ローカルコンピューターとリモートコンピューター上のデバイスに関する詳細情報を表示します。
オペレーティングシステムに応じて、適切な.cab
パッケージをダウンロードします。
.cab
アーカイブを開き、fil[some letters and numbers]
という名前のファイルを抽出します。約80KBである必要があります。
devcon.exe
に変更します。注デバイスを有効/無効にするには、devcon.exe
を管理者権限で実行する必要があります。
Windowsは、特別な識別子のセットを使用して、デバイスとそれらが属するセットアップクラスを識別します。これらの識別子は、ハードウェアデバイスをWindowsとの通信を可能にするデバイスドライバーと照合するために使用されます。
1つ以上のデバイスIDが、製造元によってデバイスに割り当てられます。それらの1つであるハードウェアIDは、デバイスのメーカー、モデル、さらにはファームウェアバージョンに至るまで非常に具体的です。他のデバイスIDも割り当てられており、より一般的であり、IDは、あるレベルで互換性のあるメーカーの他のデバイスに割り当てられている可能性があります。
devmgmt.msc
)。次のコードをWebcamCheck.cmd
として保存します。
@ echo off REMは、少なくとも2つのパラメーターがあることを確認します if "%〜2" == "" exit/b 2 REMはdevcon.exeが欠落していないことを確認します cd/d "%〜dp0" 存在しない場合devcon.exeexit/b 3 REMは、指定されていない場合、間隔を15秒に設定します if "%〜3" == ""(set interval = 15)else(set interval =%3) : poll for/f "tokens = 1 delims = \" %% G in( "%〜2")do(devcon.exe find * %% G * | findstr/i/c: "%〜2 "> nul) goto:check%errorlevel% :check0 devcon.exeステータス"%〜1 "| findstr/i/c: "disabled"> nul if%errorlevel%== 1(devcon.exe disable "%〜1") :wait timeout/t%interval%/ nobreak> nul goto:poll :check1 devcon.exe status "%〜1" | findstr/i/c: "disabled"> nul if%errorlevel%== 0(devcon.exe enable "%〜1") goto:wait
devcon.exe
ファイルをコピーして、保存したファイルと同じディレクトリに貼り付けます。
スクリプトは3つのパラメーターを取ります。最初のパラメーターはターゲットデバイスID(組み込みのWebカメラ)です。 2つ目はトリガーデバイスID(外部Webカメラ)です。 3つ目はポーリング間隔(秒単位)で、オプションです。
最初に、スクリプトは十分なパラメーターがあり、devcon.exe
が欠落していないことを確認します。
ポーリング間隔が指定されていない場合、代わりにデフォルト値(15秒)が使用されます。この値は、各デバイスチェックの間に経過する秒数を決定するために使用されます。値を下げると、検出が速くなり、システムのオーバーヘッドが増えることを意味します。別の値を試す前に、デフォルトの値でテストして、どのようになるかを確認してください。いずれにせよ、10秒未満にすることはお勧めしません。
バッチスクリプトには、genericデバイスIDが必要です。これは、次の形式を使用します。
XXX\VID_YYYY&PID_ZZZZ
XXX
はデバイスクラス(USB、PCIなど)です。 YYYY
はベンダーIDであり、ハードウェアメーカーに割り当てられた一意の値です。 ZZZZは、デバイスモデルを識別する製品IDです。
たとえば、次のようなデバイスIDを取得した場合:
USB\VID_1D4D&PID_1002&REV_0039&MI_00
一般的なIDは次のようになります。
USB\VID_1D4D&PID_1002
トリガーデバイス(外部Webカメラ)が接続されているかどうかを確認した後、スクリプトは、ターゲットデバイス(組み込みWebカメラ)が既に無効/有効になっていない限り、無効または有効にします。
今必要なのは、ログオン時にバッチスクリプトを自動的に開始することだけです。
taskschd.msc
)を開き、アクション>タスクの作成をクリックします。WebcamCheck
という名前を付けます。system
と入力し、[名前の確認]をクリックしてから、[〜#〜] ok [〜#〜]をクリックします。"X:\Path\to\WebcamCheck.cmd"
と入力し、実際のファイルパスに置き換えます。"XXX\VID_YYYY&PID_ZZZZ" "AAA\VID_BBBB&PID_CCCC"
と入力し、デバイスIDを適切な値に置き換えます。注内蔵ウェブカメラをできるだけ早く無効にしたい場合は、ログインする前に外部ウェブカメラを接続してください。
これは、起動時にのみ外部カメラをチェックして終了するバッチスクリプトの簡略版です。
@echo off
REM ensure there at least 2 parameters
if "%~2" == "" exit /b 2
REM verify devcon.exe is not missing
cd /d "%~dp0"
if not exist devcon.exe exit /b 3
:check
for /f "tokens=1 delims=\" %%G in ("%~2") do (devcon.exe find *%%G* | findstr /i /c:"%~2" >nul)
goto :check%errorlevel%
:check0
devcon.exe status "%~1" | findstr /i /c:"disabled" >nul
if %errorlevel% == 1 (devcon.exe disable "%~1")
exit /b
:check1
devcon.exe status "%~1" | findstr /i /c:"disabled" >nul
if %errorlevel% == 0 (devcon.exe enable "%~1")
exit /b
ポータブルフリーウェアアプリケーション「WebCamOn-Offv1.0」を試すことができます。Cmdサポートもあります http://www.sordum.org/8585/webcam-on-off-dont-let-your-webcam -spy-on-you /
コントロールパネルまたはデバイスマネージャーでWebカメラを無効にすることができます。これにより、外部Webカメラをインストールして、現在実行されている唯一のWebカメラにすることができます。その後、いつでもデバイスを再度有効にすることができます。
お役に立てれば。