[解決] Windows8.1でBF3のマルチをプレイする方法

/ FPS / Comment[0]
Win8においてマルチプレイをしようとするとPunkBusterに蹴られる不具合について色々ググって調べさせてもらいましたが
一つヒットしなかった原因を見つけたので書いておきます。
情報,SSを提供してくれたごっちょさんに感謝です。

おそらくほとんどの人がこれで引っかかっているのではないでしょうか。

ロケール変更後、PunkBusterの絶対パス中に全角文字が入っているとPunkBusterが起動できない


とりあえず上記はいったん置いといて手順を踏んでいきましょう。

Windows8.1でBF3を起動させようとすると、まず初めにDirectXのエラーが起きます。
これはロケールをEN(米国)にすることで解決できます。

やり方:
  1. スタート→コントロールパネル→地域を開く
  2. 管理タブ「Unicode対応ではないプログラムの言語」の「システム ロケールの変更」をクリック
  3. 現在のシステム ロケールを「英語(米国)」に変更 OK


すると今度は、ロケールを変更してしまったがために
PunkBuster含む全ての全角パスに依存したプログラムが全角ディレクトリを読めなくなります
ここが一番の落とし穴です。

PunkBusterのパスは「C:\Users\アカウント名\AppData\Roaming\PnkBstrB.exe」なので
もし、Windowsのアカウント名に全角を使っている場合は\Usersディレクトリも全角で作成されるため
PunkBusterが起動できず、マルチプレイに参加できない状態になるわけです。



対処法1(簡単): 新たに半角のBF専用のユーザーを作る


コマプロを管理者権限で実行し下記コマンドを実行
> net user /add bf3yaritai password /active:yes

コマンド実行後にログアウトして作成したアカウントにログインします。
これでユーザディレクトリは半角になったので実行できると思うんですがどうでしょう。

対処法2(面倒): レジストリを弄って現在のアカウントを半角ディレクトリにする


管理者コマプロに下記を打ち込み一時的にadministratorアカウントを有効化します。
> net user administrator password /active:yes

現在のアカウントはログアウトしてadministratorでログインして例のごとくコマプロを起動します。
対象のアカウントを見つけるため、レジストリを探索します。
> reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList"
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\profilelist
ProfilesDirectory REG_EXPAND_SZ %SystemDrive%\Users
Default REG_EXPAND_SZ %SystemDrive%\Users\Default
Public REG_EXPAND_SZ %SystemDrive%\Users\Public
ProgramData REG_EXPAND_SZ %SystemDrive%\ProgramData

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\profilelist\S-1-5-18
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\profilelist\S-1-5-19
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\profilelist\S-1-5-20
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\profilelist\S-1-5-21-3516170164-3905323232-2693302657-1000
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\profilelist\S-1-5-21-3516170164-3905323232-2693302657-1001

S-なんたらがSIDと呼ばれるユーザーアカウントIDです。

一般的に作成されるアカウントのSIDは1000から連番になっています。reg queryで対象のアカウントを確認しましょう。
> reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\profilelist\S-1-5-21-3516170164-3905323232-2693302657-1000"
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\profilelist\S-1-
5-21-3516170164-3905323232-2693302657-1000
ProfileImagePath REG_EXPAND_SZ C:\Users\全角ユーザー君
Flags REG_DWORD 0x0
State REG_DWORD 0x0
Sid REG_BINARY 010500000000000515000000B47F94D1E080C6E8818988A0E8030000
ProfileLoadTimeLow REG_DWORD 0x0
ProfileLoadTimeHigh REG_DWORD 0x0
RefCount REG_DWORD 0x3
RunLogonScriptSync REG_DWORD 0x0

「全角ユーザー君」を「Zenkaku」に変えてみます。
> reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\S-1-5-21-3516170164-3905323232-2693302657-1001\ProfileImagePath" /t REG_EXPAND_SZ /v ProfileImagePath /d "C:\Users\Zenkaku"

reg queryで確認してみます。
> reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\S-1-5-21-3516170164-3905323232-2693302657-1001\profileimagepath"
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\S-1-5-21-3516170164-3905323232-2693302657-1001\ProfileImagePath
(既定) REG_SZ
ProfileImagePath REG_EXPAND_SZ C:\Users\Zenkaku

変わりましたね。

実物のディレクトリもリネームします。全角ユーザー君→Zenkaku
> rename C:\Users\全角ユーザー君 C:\Users\Zenkaku

再起動してログインするとユーザディレクトリ名が変わっているはずです。
あんまり意味はありませんがセキュリティ保護のためAdministratorは無効化しておきましょう。
> net user administrator /active:no


まとめ


  1. ロケールを米国に変更
  2. ユーザディレクトリを半角にするか新しく半角のユーザーアカウントを作成
  3. \Users\に全角を含まないアカウントでWindowsにログインしてBF3を起動
関連記事

コメント

:
:
:
:
:
管理人のみ表示を許可