環境変数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が起動した。