の件で、PowerShell 上から reg.exe を用いて空白を含む文字列を登録しようとすると以下のようにエラーとなる。
PS C:\WINDOWS\system32> REG ADD HKCR\Directory\Shell\WSLUbuntuHere /f /v Icon /d '"""C:\Program Files\WindowsApps\CanonicalGroupLimited.UbuntuonWindows_2004.2022.1.0_x64__79rhkp1fndgsc\ubuntu.exe"""' エラー: 構文が無効です。 "REG ADD /?" と入力すると使用法が表示されます。もっとプリミティブにするとこう。
PS C:\WINDOWS\system32> REG ADD HKCR\Directory\Shell\WSLUbuntuHere /f /v Icon /d '"""a a"""' エラー: 構文が無効です。 "REG ADD /?" と入力すると使用法が表示されます。なぜかダブルクオーテーションで囲まなければ通る。
PS C:\WINDOWS\system32> REG ADD HKCR\Directory\Shell\WSLUbuntuHere /f /v Icon /d 'a a' この操作を正しく終了しました。
PS C:\WINDOWS\system32> REG QUERY HKCR\Directory\Shell\WSLUbuntuHere /v Icon HKEY_CLASSES_ROOT\Directory\Shell\WSLUbuntuHere Icon REG_SZ a a
しばらくと言わず、ものすごく悩んだのだが、一旦文字列を切ってエスケープしたスペースを渡す必要があるようだ。
なぜ、こうなるのか全然気持ちが分からん。
とりあえず、対処方法は分かったのだが、流石に
PS C:\WINDOWS\system32> REG ADD HKCR\Directory\Shell\WSLUbuntuHere /f /v Icon /d '"""a"'` '"a"""' この操作を正しく終了しました。
PS C:\WINDOWS\system32> REG QUERY HKCR\Directory\Shell\WSLUbuntuHere /v Icon HKEY_CLASSES_ROOT\Directory\Shell\WSLUbuntuHere Icon REG_SZ "a a"コマンドプロンプトの場合はこう書けば出来る。
C:\WINDOWS\system32>REG ADD HKCR\Directory\Shell\WSLUbuntuHere /f /v Icon /d """a"^ "a""" この操作を正しく終了しました。これに気が付いてようやく道が開けたのだが、これってつまりコマンドプロンプトに下請けに出してるという意味か???
なぜ、こうなるのか全然気持ちが分からん。
とりあえず、対処方法は分かったのだが、流石に
- '"""C:\Program Files\WindowsApps\CanonicalGroupLimited.UbuntuonWindows_2004.2022.1.0_x64__79rhkp1fndgsc\ubuntu.exe"""'
- '"""C:\Program"'` '"Files\WindowsApps\CanonicalGroupLimited.UbuntuonWindows_2004.2022.1.0_x64__79rhkp1fndgsc\ubuntu.exe"""'
- '"""%ProgramFiles%\WindowsApps\CanonicalGroupLimited.UbuntuonWindows_2004.2022.1.0_x64__79rhkp1fndgsc\ubuntu.exe"""'
タグ
コメントをかく