web-dev-qa-db-ja.com

コマンドラインからWindows10でファイルタイプの関連付けを取得するための最良の方法は?

コマンドラインでassocとftypeを使用して、ファイルタイプの関連付けを取得できることを認識しています。だから私がするとき:

enter image description here

.htmlファイルはiexplorerで開かれているような印象を受けます。

ただし、htmlファイルはchromeで開きます。これは、chromeがhtmlファイルのデフォルトアプリとして設定されているためです。

enter image description here

実際にプログラムがchromeで開くのに、ftypeがiexplorerを提供するのはなぜですか?

5
Postlagerkarte

Ftypeとassocは、Windows8以降を実行しているシステムではかなり役に立たないようです。

これは、MicrosoftがWindows 8で、ユーザーが組み込みのGUIを介してのみデフォルトのプログラムを設定できるようにすることを決定したためです。これはおそらく、セキュリティ上の理由と、アプリケーションがファイルタイプの関連付けを乗っ取る際の問題が原因でした。

そのため、新しいレジストリキーが導入され、Windowsはユーザーの選択を

_HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\<extension>\UserChoice
_

キーには、Prog-Idとハッシュ値が含まれています。正しいハッシュ値は、UserChoice ProgId値が他のアプリケーションではなく、ユーザーによって設定されたことを証明します。ハッシュが無効な場合、Windowsはユーザーの選択をデフォルトのアプリケーションにリセットします。

ただし、_ftype command_は上記のレジストリキーを認識していません。

HKCR\htmlfile\Shell\open\command\(Default)レジストリキーを読み取り、結果を出力します。

したがって、ftypeコマンドの結果を使用して、特定のファイル拡張子に関連付けられているアプリケーションを特定することはできません。

2
Postlagerkarte

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts \\ UserChoiceでファイルの関連付けの名前を変更または削除すると、ウィンドウでftype/assoc定義を確認し、希望どおりに機能することがわかりました。
UserChoiceキーの問題は、ftype/assocの場合のように.pl拡張子でPerlを実行できないことです。
E。 g。以下の設定を使用して、拡張子が.plのPerlプログラムを実行します。

>assoc .pl  
.pl=Perl  
>ftype Perl  
Perl="C:\Perl64\bin\Perl.exe" "%1" %*  
0
user333869