hack のためのネタ帳, etc,,,

状況

の件で、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"""'
と書く気にはなれず、REG_EXPAND_SZ にして
  • '"""%ProgramFiles%\WindowsApps\CanonicalGroupLimited.UbuntuonWindows_2004.2022.1.0_x64__79rhkp1fndgsc\ubuntu.exe"""'
とした。

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Wiki内検索

フリーエリア

管理人/副管理人のみ編集できます