Xbox 360 コントローラーの各種ドライバをバッチファイルを使って切り替えてみました

2014年06月06日
0

前回の記事 では、 デバイスマネージャー経由で非公式ドライバから公式ドライバへの切り替え作業を行いました。

ただ、この切り替え方法はいちいちデバイスマネージャーを起動して手動でドライバの入れ替え作業が必要なため、プレイしたいゲームにあわせて頻繁にドライバを切り替えたい場合は非常に面倒な手順となってしまいます。

実はこの面倒な作業をバッチファイル(.bat)を使うことによってかんたんにドライバの切り替えが可能であることが、ずいぶんと前からネット上で公開されています。

そこで今回はこの面倒な Xbox 360 コントローラー公式・非公式ドライバの切り替えを、バッチファイル(.bat)を作成して実際にドライバの切り替えを行ってみます。

Xbox 360 コントローラーの各種ドライバをバッチファイルを使って切り替えてみました

Windows Driver Kit Version 7.1.0 から 64bit 版 devcon.exe を取り出す

バッチファイル(.bat) を使って Xbox 360 コントローラーのドライバを切り替えるためには、「devcon.exe」 というプログラムファイルが必要になります。このプログラムは 32bit 版と 64bit 版の 2種類があり、使用している PC の OS にあわせて用意しておく必要があります。

私が使用している OS は Windows 7 64bit 版のため 64 bit 版 「devcon.exe」 が必要ということになります。調べてみると、64 bit 版 「devcon.exe」 は 「Windows Driver Kit Version 7.1.0」 に同梱されており、通常はそのツールをインストールしてからフォルダから目的のプログラムを取り出さなければなりません。

本来は 「Windows Driver Kit Version 7.1.0」 をインストールしなければなりませんでしたが、わざわざインストールしなくても 64 bit 版 「devcon.exe」 だけを抽出できるという ネット情報 がありましたので、今回はその方法で 64 bit 版 「devcon.exe」 プログラムファイルを取り出してみます。

Windows Driver Kit Version 7.1.0」 から 64 bit 版 「devcon.exe」 プログラムファイルを取り出す手順は下記の通りになります。

64 bit 版 「devcon.exe」 を取り出す手順
  1. Microsoft Download Center から Windows Driver Kit Version 7.1.0GRMWDK_EN_7600_1.ISO をダウンロード
  2. 仮想ドライブソフトなどでダウンロードした GRMWDK_EN_7600_1.ISO をマウント
  3. wdk フォルダ内にある setuptools_x64fre_cab001.cab をコピーして展開・解凍
  4. _devcon.exe_00000 ファイルがあるのでこれを devcon.exe にリネーム(名前変更)
Windows Driver Kit Version 7.1.0 から 64bit 版 devcon.exe 抽出、「Windows Driver Kit Version 7.1.0」 をダウンロード、ダウンロードした 「GRMWDK_EN_7600_1.ISO」 ファイルを仮想ドライブソフトを使い 「WDK」 フォルダにある 「setuptools_x64fre_cab001.cab」 をコピー

Windows Driver Kit Version 7.1.0」 をダウンロードします。

ダウンロードしたファイルが 「GRMWDK_EN_7600_1.ISO」 となっていますので、仮想ドライブソフトなどを使って中身が見えるようにします。

ISO ファイルの中にある 「WDK」 フォルダを開きます。「setuptools_x64fre_cab001.cab」 というファイルがあるのでコピーします。

Windows Driver Kit Version 7.1.0 から 64bit 版 devcon.exe 抽出、「Windows Driver Kit Version 7.1.0」 からコピーした 「setuptools_x64fre_cab001.cab」 を展開・解凍

コピーした 「setuptools_x64fre_cab001.cab」 ファイルを展開・解凍します。

Windows Driver Kit Version 7.1.0 から 64bit 版 devcon.exe 抽出、解凍した 「setuptools_x64fre_cab001.cab」 フォルダ内にある 「_devcon.exe_00000」 ファイルを 「devcon.exe」 にリネーム(名前変更)

展開・解凍した 「setuptools_x64fre_cab001」 フォルダ内に 「_devcon.exe_00000」 というファイルがあるので、これを 「devcon.exe」 にリネーム(名前変更)します。

Windows Driver Kit Version 7.1.0 から 64bit 版 devcon.exe 抽出、リネーム(名前変更)した 「devcon.exe」 を適当な場所に置く、Xbox360 コントローラー非公式・公式ドライバを切り替えるバッチファイルにフルパス(絶対パス)を記述するためメモしておく(画像では C:\Driver\ux360c\devcon.exe)

リネーム(名前変更)した 「devcon.exe」 を適当な場所に置いておきます。

今回は 以前、非公式ドライバを解凍してファイルを置いた場所(上記画像) と同じところにおきました。

この 「devcon.exe」 を置いた場所のパス名(C:\Driver\ux360c\devcon.exe) は、後ほどドライバ切り替え用バッチファイル(.bat) に記述しますのでメモしておきます。

Xbox 360 コントローラーのハードウェア ID(VID、PID)メモ

Xbox360 コントローラー非公式・公式ドライバを切り替えるバッチファイルにXbox360 コントローラーのハードウェア ID(VID、PID)を記述するため、デバイスマネージャーから Xbox360 コントローラーのハードウェア ID(VID、PID) をコピー

デバイスマネージャーを開き、Xbox 360 コントローラーのハードウェア ID(VID、PID) を右クリックからコピーしてメモしておきます。

このハードウェア ID(VID、PID) を後ほどバッチファイル(.bat)に記述します。

Xbox 360 コントローラー公式ドライバから非公式ドライバへ切り替え

Xbox 360 コントローラー公式ドライバがインストールされている状況から、非公式ドライバへ切り替えるバッチファイル(.bat)を実行します。

@rem Microsoft Xbox 360 Accessories 公式ドライバ(Xusb21.inf) or
@rem Windows 付属ドライバ(xnacc.inf) から非公式ドライバ(x360c.inf)へ更新

@rem x360csai.exe(or x360wcsai.exe)、XBoxStat.exe が起動・常駐しているとドライバ更新に失敗するかもしれないので
@rem 念のためプログラムを終了させる処理を入れておく
@rem x360csai.exe(or x360wcsai.exe)、XBoxStat.exe を起動・常駐させることがないのなら、省略していいかも
taskkill /IM x360csai.exe
taskkill /IM XBoxStat.exe

@rem 64bit版 devcon.exe を使って x360c.inf(非公式ドライバ) にドライバを更新
"C:\Driver\ux360c\devcon.exe" update "C:\Driver\ux360c\x360c.inf" "USB\VID_045E&PID_028E"

@rem 非公式ドライバの x360csai.exe(or x360wcsai.exe) を起動する
@rem 不要なら起動させる必要はないかも
start "" "C:\Driver\ux360c\x360csai.exe"

@rem ちゃんと問題なくバッチファイルが動いたかどうか確認のためポーズ
@rem 不要なら exit にすればコマンドプロンプト終了
pause

上記のコードを バッチファイル(.bat) に記述して保存します。

7、8、11、15、19行目が バッチファイル(.bat) を開いたときに実行されるコード部分です。

各行の行頭にある 「@rem」 はコメントのため、実行はされません。

以下、各コード内容を確認していきます。

@rem Microsoft Xbox 360 Accessories 公式ドライバ(Xusb21.inf) or
@rem Windows 付属ドライバ(xnacc.inf) から非公式ドライバ(x360c.inf)へ更新

@rem x360csai.exe(or x360wcsai.exe)、XBoxStat.exe が起動・常駐しているとドライバ更新に失敗するかもしれないので
@rem 念のためプログラムを終了させる処理を入れておく
@rem x360csai.exe(or x360wcsai.exe)、XBoxStat.exe を起動・常駐させることがないのなら、省略していいかも
taskkill /IM x360csai.exe
taskkill /IM XBoxStat.exe

ドライバ切り替え時に Xbox 360 コントローラー用のプログラムが常駐している状態だと、切り替えがうまくいかない可能性があります。そのため、あらかじめプロセスを終了処理させておくように記述しています。

Xbox 360 コントローラー有線版非公式ドライバを使っているため 「x360csai.exe」となっていますが、無線版非公式ドライバを使用している場合は 「x360wcsai.exe」 を指定します。

if 文 を使えばもう少しスマートなコードが書けるかもしれませんが試していません。

@rem 64bit版 devcon.exe を使って x360c.inf(非公式ドライバ) にドライバを更新
"C:\Driver\ux360c\devcon.exe" update "C:\Driver\ux360c\x360c.inf" "USB\VID_045E&PID_028E"

「devcon.exe」 ファイルと 「update」 コマンドを使って非公式ドライバに切り替えます。

「devcon.exe」 ファイルが置いてある場所をフルパス(パス名)で指定 しておきます。カレントディレクトリを取得 すれば devcon.exe をフルパスで指定しなくてもいいのですが、ここでは省略します。

update と入れて、非公式ドライバの inf ファイル のパス名(フルパス)を指定します。

行の最後にドライバ切り替え対象となる Xbox 360 コントローラーのハードウェア ID(VID、PID) を記述します。

@rem 非公式ドライバの x360csai.exe(or x360wcsai.exe) を起動する
@rem 不要なら起動させる必要はないかも
start "" "C:\Driver\ux360c\x360csai.exe"

「start」 コマンドを使って非公式ドライバ用の常駐プログラム(有線 ・・・ x360csai.exe、無線 ・・・ x360wcsai.exe)のパス名(フルパス)を入力して起動させています。

「””」 について、この箇所はウィンドウのタイトルバーに表示するタイトル内容を入れるところと決まっていますが、記述する必要はないため空白扱いになる 「””」 を入れています。

@rem ちゃんと問題なくバッチファイルが動いたかどうか確認のためポーズ
@rem 不要なら exit にすればコマンドプロンプト終了
pause

「pause」 コマンドを使って処理を一時的に停止させています。

このコマンドが実行されると 「続行するには何かキーを押してください . . .」 と表示され、何かキーを押すまでは処理は止まったままとなります。

これは上記のコード実行結果がきちんと問題なく実行できたかどうか確認するため、バッチファイル(.bat)の最後の行で 「pause」 コマンドを入れています。

Xbox360 コントローラー公式ドライバから非公式ドライバ切り替えバッチファイル実行、エラー: プロセス x360csai.exe が見つかりませんでした。、成功: プロセス XBoxStat.exe (PID 9368) に強制終了のシグナルを送信しました。、Drivers installed successfully.
C:\Driver\ux360c\bat>taskkill /IM x360csai.exe
エラー: プロセス "x360csai.exe" が見つかりませんでした。

C:\Driver\ux360c\bat>taskkill /IM XBoxStat.exe
成功: プロセス "XBoxStat.exe" (PID 9368) に強制終了のシグナルを送信しました。

C:\Driver\ux360c\bat>"C:\Driver\ux360c\devcon.exe" update "C:\Driver\ux360c\x360c.inf" "USB\VID_045E&PID_028E"
Updating drivers for USB\VID_045E&PID_028E from C:\Driver\ux360c\x360c.inf.
Drivers installed successfully.

C:\Driver\ux360c\bat>start "" "C:\Driver\ux360c\x360csai.exe"

C:\Driver\ux360c\bat>pause
続行するには何かキーを押してください . . .

Xbox 360 コントローラー公式ドライバから非公式ドライバに切り替えるバッチファイル(.bat)を実行した結果です。公式ドライバから非公式ドライバへの切り替えは成功しています。

以下、バッチファイル(.bat) の実行結果を確認していきます。

C:\Driver\ux360c\bat>taskkill /IM x360csai.exe
エラー: プロセス "x360csai.exe" が見つかりませんでした。

終了処理の対象プログラムが起動していなかった場合は、エラー結果を返します。この時点では対象プログラムは起動していなかったので、特に問題ありません。

気になる方は if 文 をうまく使えばスマートなコードが書けるかもしれませんが試していません。

C:\Driver\ux360c\bat>taskkill /IM XBoxStat.exe
成功: プロセス "XBoxStat.exe" (PID 9368) に強制終了のシグナルを送信しました。

指定したプログラムが終了できた場合は、成功結果を返します。(PID xxxx)は毎回異なる数字になりますので、特に気にする必要はありません。

C:\Driver\ux360c\bat>"C:\Driver\ux360c\devcon.exe" update "C:\Driver\ux360c\x360c.inf" "USB\VID_045E&PID_028E"
Updating drivers for USB\VID_045E&PID_028E from C:\Driver\ux360c\x360c.inf.
Drivers installed successfully.

「devcon.exe」 で非公式ドライバ 「x360c.inf」 を指定して切り替えます。「Drivers installed successfully.」 と表示されれば、デバイスドライバの切り替えは正しく処理できたことになります。

Xbox360 コントローラー公式ドライバから非公式ドライバ切り替えバッチファイル実行、非公式ドライバへ切り替え後、デバイスマネージャーの「ヒューマンインターフェイスデバイス」直下の「Microsoft Xbox 360 Controller」をダブルクリックするか、右クリックからプロパティをクリック

Xbox 360 コントローラー非公式ドライバへ切り替え後、デバイスマネージャーを開き 「ヒューマン インターフェイス デバイス」 直下の 「Microsoft Xbox 360 Controller」 をダブルクリックするか、右クリックから 「プロパティ」 をクリックします。

Xbox360 コントローラー公式ドライバから非公式ドライバ切り替えバッチファイル実行、非公式ドライバへ切り替え後、デバイスマネージャーの「ヒューマンインターフェイスデバイス」直下の「Microsoft Xbox 360 Controller」をダブルクリックするか、右クリックからプロパティをクリック、公式ドライバから非公式ドライバに切り替わっていることを確認、プロバイダー Masahiko Morii、日付 2010/05/04、バージョン 6.1.7600.16385、デジタル署名者 Masahiko Morii
  • プロバイダー ・・・ Masahiko Morii
  • 日付 ・・・ 2010/05/04
  • バージョン ・・・ 6.1.7600.16385
  • デジタル署名者 ・・・ Masahiko Morii

Xbox 360 コントローラー公式ドライバから非公式ドライバに切り替わっているのが確認できます。

Xbox360 コントローラー公式ドライバから非公式ドライバ切り替えバッチファイル実行、非公式ドライバへ切り替え後、デバイスマネージャーの「ヒューマンインターフェイスデバイス」直下の「Microsoft Xbox 360 Controller」をダブルクリックするか、右クリックからプロパティをクリック、公式ドライバから非公式ドライバに切り替わっていることを確認、ドライバーの詳細ボタンをクリック、プロバイダー Masahiko Morii、ファイルバージョン 6.1.7600.16385 (win7_rtm.090713-1255)、著作権 Masahiko Morii. All rights reserved.
  • ドライバーファイル
    • C:\Windows\system32\DRIVERS\x360chm.sys
    • C:\Windows\system32\x360cffd.dll
    • C:\Windows\system32\x360cps.dll
    • C:\Windows\SysWOW64\x360cffd.dll
  • 日付 ・・・ 2010/05/04
  • バージョン ・・・ 6.1.7600.16385 (win7_rtm.090713-1255)
  • 著作権 ・・・ Masahiko Morii. All rights reserved.
  • デジタル署名者 ・・・ デジタル署名されていません

「ドライバーの詳細」 ボタンをクリックしたときに表示される画面です。

こちらも同様に Xbox 360 コントローラー公式ドライバから非公式ドライバのバージョンに切り替わっています。

これで Xbox 360 コントローラー公式ドライバから非公式ドライバへの切り替えは完了です。

Xbox 360 コントローラー非公式ドライバから公式ドライバへ切り替え

@rem 非公式ドライバ(x360c.inf)から Microsoft Xbox 360 Accessories 公式ドライバ(Xusb21.inf)へ更新

@rem x360csai.exe(or x360wcsai.exe)、XBoxStat.exe が起動・常駐しているとドライバ更新に失敗するかもしれないので
@rem 念のためプログラムを終了させる処理を入れておく
@rem x360csai.exe(or x360wcsai.exe)、XBoxStat.exe を起動・常駐させることがないのなら、省略していいかも
taskkill /IM x360csai.exe
taskkill /IM XBoxStat.exe

@rem 64bit版 devcon.exe を使って Xusb21.inf(Microsoft Xbox 360 Accessories 公式ドライバ) にドライバを更新
"C:\Driver\ux360c\devcon.exe" update "C:\Program Files\Microsoft Xbox 360 Accessories\Xusb21.inf" "USB\VID_045E&PID_028E"

@rem 非公式ドライバの Microsoft Xbox 360 Controller のプロパティ画面のファイルを削除する
del C:\Windows\System32\x360cps.dll

@rem 公式ドライバの XBoxStat.exe を起動する
@rem 不要なら起動させる必要はないかも
start "" "C:\Program Files\Microsoft Xbox 360 Accessories\XBoxStat.exe"

@rem ちゃんと問題なくバッチファイルが動いたかどうか確認のためポーズ
@rem 不要なら exit にすればコマンドプロンプト終了
pause

非公式ドライバがインストールされている状況から、公式ドライバへ切り替えるバッチファイル(.bat) を実行するため、上記のコードをバッチファイル(.bat)に記述して保存します。

6、7、10、13、17、21行目が バッチファイル(.bat) を開いたときに実行されるコード部分です。

コード内容は Xbox 360 コントローラー公式ドライバから非公式ドライバ切り替えバッチファイルの内容 とほぼ一緒です。

以下、Xbox 360 コントローラー公式ドライバから非公式ドライバ切り替えバッチファイルの内容 と異なる部分を確認します。

@rem 64bit版 devcon.exe を使って Xusb21.inf(Microsoft Xbox 360 Accessories 公式ドライバ) にドライバを更新
"C:\Driver\ux360c\devcon.exe" update "C:\Program Files\Microsoft Xbox 360 Accessories\Xusb21.inf" "USB\VID_045E&PID_028E"

「devcon.exe」 で Xbox 360 コントローラー公式ドライバファイル 「Xusb21.inf」 をフルパス(絶対パス)で指定して切り替えます。

@rem 非公式ドライバの Microsoft Xbox 360 Controller のプロパティ画面のファイルを削除する
del C:\Windows\System32\x360cps.dll

Xbox 360 コントローラー非公式ドライバ以外のドライバ(公式、OS)に切り替える場合、ゲームコントローラーのプロパティ画面 用のファイルを 削除 しておく必要があります。

有線版 Xbox 360 コントローラー非公式ドライバを使っているため 「x360cps.dll」 になっていますが、 無線版 Xbox 360 コントローラー非公式ドライバの場合は 「x360wcps.dll」 を記述します。

@rem 公式ドライバの XBoxStat.exe を起動する
@rem 不要なら起動させる必要はないかも
start "" "C:\Program Files\Microsoft Xbox 360 Accessories\XBoxStat.exe"

公式ドライバ用の常駐プログラム 「XBoxStat.exe」 を起動するように記述しています。必須ではないので使う必要がないのなら、コードを削除するなり行頭に @rem をつけてコメント扱いにします。

Xbox360 コントローラー非公式ドライバから公式ドライバ切り替えバッチファイル実行、成功: プロセス x360csai.exe (PID 8344) に強制終了のシグナルを送信しました。、エラー: プロセス XBoxStat.exe が見つかりませんでした。、Drivers installed successfully.、C:\Driver\ux360c\bat>del C:\Windows\System32\x360cps.dll
C:\Driver\ux360c\bat>taskkill /IM x360csai.exe
成功: プロセス "x360csai.exe" (PID 8344) に強制終了のシグナルを送信しました。

C:\Driver\ux360c\bat>taskkill /IM XBoxStat.exe
エラー: プロセス "XBoxStat.exe" が見つかりませんでした。

C:\Driver\ux360c\bat>"C:\Driver\ux360c\devcon.exe" update "C:\Program Files\Microsoft Xbox 360 Accessories\Xusb21.inf" "USB\VID_045E&PID_028E"
Updating drivers for USB\VID_045E&PID_028E from C:\Program Files\Microsoft Xbox360 Accessories\Xusb21.inf.
Drivers installed successfully.

C:\Driver\ux360c\bat>del C:\Windows\System32\x360cps.dll

C:\Driver\ux360c\bat>start "" "C:\Program Files\Microsoft Xbox 360 Accessories\XBoxStat.exe"

C:\Driver\ux360c\bat>pause
続行するには何かキーを押してください . . .

Xbox 360 コントローラー非公式ドライバから公式ドライバに切り替えるバッチファイル(.bat)を実行した結果です。非公式ドライバから公式ドライバへの切り替えは成功しています。

実行結果の内容については Xbox 360 コントローラー公式ドライバから非公式ドライバへ切り替え を参考にしてください。

Xbox360 コントローラー非公式ドライバから公式ドライバ切り替えバッチファイル実行、公式ドライバへ切り替え後、デバイスマネージャーの「Windows クラス用の Microsoft 共通コントローラー」直下の「Xbox 360 Controller for Windows」 をダブルクリックするか、右クリックからプロパティをクリック

Xbox 360 コントローラー公式ドライバへ切り替え後、デバイスマネージャーを開き 「Windows クラス用の Microsoft 共通コントローラー」 直下の 「Xbox 360 Controller for Windows」 をダブルクリックするか、右クリックから 「プロパティ」 をクリックします。

Xbox360 コントローラー非公式ドライバから公式ドライバ切り替えバッチファイル実行、公式ドライバへ切り替え後、デバイスマネージャーの「Windows クラス用の Microsoft 共通コントローラー」直下の「Xbox 360 Controller for Windows」 をダブルクリックするか、右クリックからプロパティをクリック、ドライバータブ、プロバイダー Microsoft、日付 2009/08/13、バージョン 2.1.0.1349、デジタル署名者 Microsoft Windows Hardware Compatibility Publisher
  • プロバイダー ・・・ Microsoft Corporation
  • 日付 ・・・ 2009/08/13
  • バージョン ・・・ 2.1.0.1349
  • デジタル署名者 ・・・ Microsoft Windows Hardware Compatibility Publisher

Xbox 360 コントローラー 非公式ドライバ から 公式ドライバ に切り替わっています。

Xbox360 コントローラー非公式ドライバから公式ドライバ切り替えバッチファイル実行、公式ドライバへ切り替え後、デバイスマネージャーの「Windows クラス用の Microsoft 共通コントローラー」直下の「Xbox 360 Controller for Windows」 をダブルクリックするか、右クリックからプロパティをクリック、ドライバーの詳細ボタンをクリック、C:\Windows\system32\DRIVERS\xusb21.sys、プロバイダー Microsoft Corporation、ファイルバージョン 9.18.1034.0 (XUSB_MAIN(dxblder).090813-1509、著作権 Microsoft Corporation. All rights reserved.、デジタル署名者 Microsoft Windows Hardware Compatibility Publisher
Xbox360 コントローラー非公式ドライバから公式ドライバ切り替えバッチファイル実行、公式ドライバへ切り替え後、デバイスマネージャーの「Windows クラス用の Microsoft 共通コントローラー」直下の「Xbox 360 Controller for Windows」 をダブルクリックするか、右クリックからプロパティをクリック、ドライバーの詳細ボタンをクリック、C:\Windows\system32\WdfCoInstaller01009.dll、プロバイダー Microsoft Corporation、ファイルバージョン 1.9.7100.0 (winmain_win7rc.090421-1700)、著作権 Microsoft Corporation. All rights reserved.、デジタル署名者 Microsoft Windows Hardware Compatibility Publisher
  • C:\Windows\system32\DRIVERS\xusb21.sys
    • プロバイダー ・・・ Microsoft Corporation
    • ファイルバージョン ・・・ 9.18.1034.0 (XUSB_MAIN(dxblder).090813-1509
    • 著作権 ・・・ Microsoft Corporation. All rights reserved.
    • デジタル署名者 ・・・ Microsoft Windows Hardware Compatibility Publisher
  • C:\Windows\system32\WdfCoInstaller01009.dll
    • プロバイダー ・・・ Microsoft Corporation
    • ファイルバージョン ・・・ 1.9.7100.0 (winmain_win7rc.090421-1700)
    • 著作権 ・・・ Microsoft Corporation. All rights reserved.
    • デジタル署名者 ・・・ Microsoft Windows Hardware Compatibility Publisher

こちらも同様に Xbox 360 コントローラー 非公式ドライバ から 公式ドライバ のバージョンに切り替わっています。

Xbox 360 コントローラー非公式ドライバから公式ドライバへの切り替えは完了です。

Xbox 360 コントローラー非公式ドライバから OS ドライバへ切り替え

@rem 非公式ドライバ(x360c.inf)から Windows 付属ドライバ(xnacc.inf)へ更新

@rem x360csai.exe(or x360wcsai.exe)、XBoxStat.exe が起動・常駐しているとドライバ更新に失敗するかもしれないので
@rem 念のためプログラムを終了させる処理を入れておく
@rem x360csai.exe(or x360wcsai.exe)、XBoxStat.exe を起動・常駐させることがないのなら、省略していいかも
taskkill /IM x360csai.exe
taskkill /IM XBoxStat.exe

@rem 64bit版 devcon.exe を使って xnacc.inf(Windows 付属ドライバ) にドライバを更新
"C:\Driver\ux360c\devcon.exe" update "C:\Windows\inf\xnacc.inf" "USB\VID_045E&PID_028E"

@rem 非公式ドライバの Microsoft Xbox 360 Controller のプロパティ画面のファイルを削除する
del C:\Windows\System32\x360cps.dll

@rem Windows 付属ドライバの状態で公式ドライバ付属の XBoxStat.exe を起動させると
@rem 暴走(CPU 使用率が高い状態のままになる)してしまうため、XBoxStat.exe は起動させないようにする
@rem start "" "C:\Program Files\Microsoft Xbox 360 Accessories\XBoxStat.exe"

@rem ちゃんと問題なくバッチファイルが動いたかどうか確認のためポーズ
@rem 不要なら exit にすればコマンドプロンプト終了
pause

非公式ドライバがインストールされている状況から、OS ドライバへ切り替える バッチファイル(.bat) を実行するため、上記のコードをバッチファイル(.bat)に記述して保存します。

6、7、10、13、21行目が バッチファイル(.bat) を開いたときに実行されるコード部分です。

コード内容は Xbox 360 コントローラー非公式ドライバから公式ドライバ切り替えバッチファイルの内容 とほぼ一緒です。

以下、Xbox 360 コントローラー非公式ドライバから公式ドライバ切り替えバッチファイルの内容 と異なる部分を確認します。

@rem 64bit版 devcon.exe を使って xnacc.inf(Windows 付属ドライバ) にドライバを更新
"C:\Driver\ux360c\devcon.exe" update "C:\Windows\inf\xnacc.inf" "USB\VID_045E&PID_028E"

「devcon.exe」 で OS ドライバファイル 「xnacc.inf」 をフルパス(絶対パス)で指定して切り替えます。

@rem Windows 付属ドライバの状態で公式ドライバ付属の XBoxStat.exe を起動させると
@rem 暴走(CPU 使用率が高い状態のままになる)してしまうため、XBoxStat.exe は起動させないようにする
@rem start "" "C:\Program Files\Microsoft Xbox 360 Accessories\XBoxStat.exe"

「XBoxStat.exe」 をコメント文(@rem)にして、実行させないようにしています。

これは Xbox 360 コントローラー OS ドライバ環境下で 「XBoxStat.exe」 を起動させると、CPU 使用率が暴走してしまうため起動させないようにしました。

「XBoxStat.exe」 は Xbox 360 コントローラー公式ドライバの環境下で使用するための常駐プログラムかと思われます。

Xbox360 コントローラー非公式ドライバから OS ドライバ切り替えバッチファイル実行、成功: プロセス x360csai.exe (PID 6348) に強制終了のシグナルを送信しました。、エラー: プロセス XBoxStat.exe が見つかりませんでした。、Drivers installed successfully.
C:\Driver\ux360c\bat>taskkill /IM x360csai.exe
成功: プロセス "x360csai.exe" (PID 6348) に強制終了のシグナルを送信しました。

C:\Driver\ux360c\bat>taskkill /IM XBoxStat.exe
エラー: プロセス "XBoxStat.exe" が見つかりませんでした。

C:\Driver\ux360c\bat>"C:\Driver\ux360c\devcon.exe" update "C:\Windows\inf\xnacc.inf" "USB\VID_045E&PID_028E"
Updating drivers for USB\VID_045E&PID_028E from C:\Windows\inf\xnacc.inf.
Drivers installed successfully.

C:\Driver\ux360c\bat>del C:\Windows\System32\x360cps.dll

C:\Driver\ux360c\bat>pause
続行するには何かキーを押してください . . .

Xbox 360 コントローラー非公式ドライバから公式ドライバに切り替えるバッチファイル(.bat)を実行した結果です。非公式ドライバから公式ドライバへの切り替えは成功しています。

実行結果の内容については Xbox 360 コントローラー公式ドライバから非公式ドライバへ切り替え を参考にしてください。

Xbox360 コントローラー非公式ドライバから OS ドライバ切り替えバッチファイル実行、OS ドライバ切り替え後、デバイスマネージャーの「Windows クラス用の Microsoft 共通コントローラー」直下の「Xbox 360 Controller for Windows」 をダブルクリックするか、右クリックからプロパティをクリック

Xbox 360 コントローラー OS ドライバへ切り替え後、デバイスマネージャーを開き 「Windows クラス用の Microsoft 共通コントローラー」 直下の 「Xbox 360 Controller for Windows」 をダブルクリックするか、右クリックから 「プロパティ」 をクリックします。

Xbox360 コントローラー非公式ドライバから OS ドライバ切り替えバッチファイル実行、OS ドライバ切り替え後、デバイスマネージャーの「Windows クラス用の Microsoft 共通コントローラー」直下の「Xbox 360 Controller for Windows」 をダブルクリックするか、右クリックからプロパティをクリック、ドライバータブ、プロバイダー Microsoft、日付 2006/06/21、バージョン 6.1.7600.16385、デジタル署名者 Microsoft Windows
  • プロバイダー ・・・ Microsoft Corporation
  • 日付 ・・・ 2006/06/21
  • バージョン ・・・ 6.1.7600.16385
  • デジタル署名者 ・・・ Microsoft Windows

Xbox 360 コントローラー 非公式ドライバ から OS ドライバ に切り替わっています。

Xbox360 コントローラー非公式ドライバから OS ドライバ切り替えバッチファイル実行、OS ドライバ切り替え後、デバイスマネージャーの「Windows クラス用の Microsoft 共通コントローラー」直下の「Xbox 360 Controller for Windows」 をダブルクリックするか、右クリックからプロパティをクリック、ドライバーの詳細ボタンをクリック、C:\Windows\system32\DRIVERS\xnacc.sys、プロバイダー Microsoft Corporation、ファイルバージョン 6.1.7600.16385 (win7_rtm.090713-1255)、著作権 Microsoft Corporation. All rights reserved.、デジタル署名者 Microsoft Windows
  • C:\Windows\system32\DRIVERS\xnacc.sys
    • プロバイダー ・・・ Microsoft Corporation
    • ファイルバージョン ・・・ 6.1.7600.16385 (win7_rtm.090713-1255)
    • 著作権 ・・・ Microsoft Corporation. All rights reserved.
    • デジタル署名者 ・・・ Microsoft Windows

こちらも同様に Xbox 360 コントローラー 非公式ドライバ から OS ドライバ のバージョンに切り替わっています。

非公式ドライバから OS ドライバへの切り替えが完了しました。

以上で、バッチファイル(.bat)を使って Xbox 360 コントローラーの各種ドライバ(公式、非公式、OS)を切り替えることができました。

このバッチファイル(.bat)を作成しておけば、デバイスマネージャーを開かなくても簡単に公式・非公式ドライバの切り替えできることが確認できました。

awgs
Posted by awgs