日本語パス名でコケる場合の対処法

海外製のソフトなどで、パスに日本語が入っているとうまく動かないことがある。
Windows のユーザー名に日本語が入っているため、Unity が起動しない人の解決法!では、Unity と Windows 8.1 の話をしてしまったが、実はこの方法は Windows Vista 以降なら、色々なソフトに有効な対処法のハズなので、ちょっとした解説を補足しておく。
これは、シンボリック リンクという機能を使って、フォルダー名に別名を付けているのだ。フォルダー名でもファイル名でも可能で、しかも別名は 1 つとは限らず、いくつでも設定可能なのだ。これはショートカットと少し似ている。でも、ショートカットはワープゾーンで、パスはやっぱり一つのままなのだが、シンボリック リンクでは別名なので、どっちの名前を使っても同じものを指すことになるのだ。
コマンド プロンプトで MKLINK という命令を使う。エクスプローラーで見るとショートカットと同じように見える。削除するときは、普通に削除するだけだ。

で、方法を改めて、もうちょっと汎用的に書き直してみた↓

パス名に日本語が入っているため、トラブっている時の解決法!
下は一例で、「C:\Users\崇」を「C:\Users\Takasi」でもアクセスできるように別名をつける場合

  1. 「コマンド プロンプト(管理者)」を起動する。(Windows キー + 「R」で「ファイル名を指定して実行」を開いて、そこに「CMD」と打ち込む。Vista や 7 の場合は Ctrl+Shift+Enter で管理者権限で開く。8 以降の場合は、画面左下の角を右クリックして「コマンド プロンプト(管理者)」をクリックする。)
  2. CD C:\Users」と打ち込み、Enter する → 「C:\Users>」 と表示される
  3. MKLINK /D Takasi 崇」と打ち込んで Enter する
    → 「Takasi <===> 崇 のシンボリック リンクが作成されました」と表示される

さらに、Windows のユーザー名に日本語が入っているため、トラブっている時の解決法!

  1. 上記の「パス名に日本語が入っているため、トラブっている時の解決法!」の手順を実行する。
  2. 続けて「REGEDIT」と打ち込んで Enter すると、「レジストリ エディター」が起動する
  3. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList キー(キーとはフォルダーみたいなヤツ)の下のキーを一つずつ選択していくと、ProfileImagePath のデータが「C:\Users\崇」になっているのがあるので、それをダブル クリックして「C:\Users\Takasi」に修正する
  4. 全てのウィンドウを閉じ、一旦サインアウトして、再びサインインする

これで、Windows はユーザー フォルダーを「C:\Users\Takasi」として認識するようになる。
もちろん、これまでのように「C:\Users\崇」としても同じところにアクセスできるため、今までインストールしてあるソフトの設定を書き替える必要ナッシング!

Windows のユーザー名に日本語が入っているため、Unity が起動しない人の解決法!

今日はたまたま仕事の後で人と会ったので、ほぼ 1 時間に一本の帰りの電車までの待ち時間まで時間つぶしが必要だった。そこで閉店 10 分前の本屋に立ち寄った。
閉店間際なので、ゆっくり本を見る暇はない。パッと目に留まったのが、Unity に関する本。
これまでの僕にとっては、Unity と言えば、.NET Framework の Enterprise Library 発祥の DI ツールのことを指していたのだが、世間一般でいう Unity が自分のそれと違うことくらいしか知らなかった。
「何だろ、Unity って?」と、その Unity の本を手にしてみた。ふむふむ、ゲーム作成ツールね…… とパラパラとめくってみると、何と、かなりすごいことがわかった。僕の想像をはるかに超えたツールだったのだ。
で、本を買う時間はなくそのまま店は閉店、帰路についたのだが、家に帰ってさっそく Windows 8.1 にアップデートしたばかりのノーパソに Unity をインストールしてみた。
ところが、インストールが終わって起動してみようとするやいなや、「Couldn’t read a file:// file」などと出て、起動しないではないか!
ググってみると、ユーザー名に日本語が入っているとダメとのこと。「ちょ~……今どきやめてよ~」と思った。もうユニコードの時代になったんでないの? Windows 8 からは、Microsoft アカウントになるため、僕たち日本人は、ユーザー名が日本語になってしまっていることが多いのだ。
ウェブ上で検索してみたが、そこでは回避方法は見つからなかった。でも、「シンボリック リンクで別名を作ってみたらどうだろう?」と思ってやってみたら、無事に解決することができた! 同じ悩みを抱える方々のために、「よし、僕が情報提供しよう!」と、この記事を書くことにしたのだ。

Windows のユーザー名に日本語が入っているため、Unity が起動しない人の解決法!
下は一例で、「崇」を「Takasi」にする場合

  1. スタート ボタンを右クリックして「コマンド プロンプト(管理者)」を起動する
  2. CD C:\Users」と打ち込み、Enter する → 「C:\Users>」 と表示される
  3. MKLINK /D Takasi 崇」と打ち込んで Enter する
    → 「Takasi <> 崇 のシンボリック リンクが作成されました」と表示される
  4. REGEDIT」と打ち込んで Enter し、「レジストリ エディター」を起動する
  5. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList キー(キーとはフォルダーみたいなヤツ)の下のキーを一つずつ選択していくと、ProfileImagePath のデータが「C:\Users\崇」になっているのがあるので、それをダブル クリックして「C:\Users\Takasi」に修正する
  6. HKEY_CURRENT_USER を選択し、編集→検索で検索対象はすべて、部分一致で「Unity」を探す
  7. その付近で「C:\Users\崇\……」のパスがデータの中に見つかったら、「C:\Users\Takasi\……」に変えておく。F3 キーを押すたびに、次の候補に移っていく。これを 20 回くらい繰り返すと、「C:\Users\崇\……」は現れなくなる
  8. 全てのウィンドウを閉じ、一旦サインアウトして、再びサインインする

以上で、起動するようになるはず。たぶん。僕は起動できるようになりましたヨ ^o^