環境変数USERPROFILE
を変更したらGoogle Chrome(以下chrome)が立ち上がらなくなった。
標準のブラウザに設定しているのに。
Google Chromeはどうしちゃったの
chromeは起動時に%USERPROFILE%\AppData\Local\Google\Chrome\User Data
のユーザーデータを見に行っている。
USERPROFILE
を変更したせいでユーザーデータのディレクトリが見えなくなってしまっている。
ユーザーデータのディレクトリは、起動オプション--user-data-dir=<ディレクトリパス>
で明に指定できる。1
つまりchromeの呼び出し時に--user-data-dir="C:\Users\<username>\AppData\Local\Google\Chrome\User Data"
を指定すればよい。
…標準ブラウザの呼び出しとは?
関連付けはどうなってるの
http
プロトコルや拡張子.html
に関連付けられているのがいわゆる「標準ブラウザ」だ。
この呼び出しはレジストリに定義されている。2
レジストリの値は、コマンドラインからreg query <キー>
で参照できる。
$ reg query 'HKCU\Software\Microsoft\Windows\Shell\Associations\UrlAssociations\http\UserChoice'
HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\Associations\UrlAssociations\http\UserChoice
Progid REG_SZ ChromeHTML
$ reg query 'HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.html\UserChoice'
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.html\UserChoice
Progid REG_SZ ChromeHTML
変数Progid
が定義されており、値がChromeHTML
になっている。3
Progid=ChromeHTML
の場合はどんなコマンドに関連付けられるのか。それもやはりレジストリに定義されている。
キー名HKEY_CURRENT_USER\Software\Classes\ChromeHTML\shell\open\command
の無名の変数(Default)
がそれだ。
どうすればいいの
都合により環境変数USERPROFILE
は弄っている(これ自体あまり推奨されない)が、chromeは常に同じユーザーとして開きたい。
なのでChromeHTML
のコマンド呼び出し定義に--user-data-dir
オプションを加える。
regeditを使ってHKEY_CURRENT_USER\Software\Classes\ChromeHTML\shell\open\command
の(Default)
を変更する。
※ regeditの使用は自己責任でお願いします。
変更した値を確認する。
$ reg query 'HKCU\Software\Classes\ChromeHTML\shell\open\command'
HKEY_CURRENT_USER\Software\Classes\ChromeHTML\shell\open\command
(Default) REG_SZ "C:\Users\<username>\AppData\Local\Google\Chrome\Application\chrome.exe" --user-data-dir="C:\Users\<username>\AppData\Local\Google\Chrome\User Data" -- "%1"
実際に設定が利いていることも確認しよう。
元々はPython経由で標準ブラウザが呼び出せなかったので調べ始めたのだった。4
試してみる。
$ python -m webbrowser -t "http://www.python.org"
chromeが起動した。