PowerShell の実装は、ファイルを開くデフォルトのアプリケーションを照会する
2022-02-04 17:53:30
多くのファイル拡張子は、実行可能なアプリケーションにバインドされています。このため、Invoke-Item を使用してドキュメントを開くことができます。
ある拡張子のファイルを、どのデフォルトの参照プログラムが開くかを調べるのは、それほど面倒なことではありません。Windowsのレジストリを利用し、独自の解決策をプログラムすればいいのです。しかし、レジストリをスキャンするときは、この記事の焦点ではない、32ビットと64ビットのマシンに少し注意を払うこと、ポイントブランク。
もう一つのルートは、少し横道にそれますが、Windows APIを呼び出すもので、以下の例で実証されています。このルートを取る最大の利点は、オペレーティングシステムに適していることです。あなたへのコストは、単にC#のコードで間接的にWindows APIの関数を呼び出すことです。
$Source = @"
using System;
Text;
Runtime.InteropServices;
public class Win32API
InteropServices; public class Win32API {
[DllImport("shell32.dll", EntryPoint="FindExecutable")]
public static extern long FindExecutableA(string lpFile, string lpDirectory, StringBuilder lpResult);
public static string FindExecutable(string pv_strFilename)
{
StringBuilder objResultBuffer = new StringBuilder(1024);
long lngResult = 0;
lngResult = FindExecutableA(pv_strFilename, string.Empty, objResultBuffer);
if(lngResult >= 32)
{
return objResultBuffer.ToString();
}
return string.Format("Error: ({0})", lngResult);
}
}
"@
Add-Type -TypeDefinition $Source -ErrorAction SilentlyContinue
$FullName = 'c:\Windows\windowsupdate.log'
$Executable = [Win32API]::FindExecutable($FullName)
"$FullName will be launched by $Executable"
唯一の制限は、FindExecutable()がチェックする必要があるファイルが存在し、ファイル拡張子で要求することができないことです。
また、@reidca feedback によると、この方法では cer や pfx 証明書ファイルなど、MMC アドオンによって開かれたファイルを検出できず、プログラムがクラッシュするとのことです。
関連
-
PowerShellでWin-Serverのパフォーマンスを詳細に監視する方法
-
PowerShellを使用して、現在のホストメモリ使用量と合計を取得する方法
-
PowerShellで現在実行中のスクリプトのパスを取得する方法
-
コンソールに緑のチェックマークを挿入するPowerShellの実装
-
PowerShellでregularとValidateSetを使用してパラメータを検証する
-
コマンドライン履歴のコマンドをコピーするPowerShellメソッド
-
ファイルリソースを含むPowershellスクリプトの例
-
PowerShellで複数ファイルからキーワードを取得する
-
PowerShellでWindowsの機能オプションを表示する方法
-
PowerShellによるパスワード難読化の例
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Powershellを選択すべき10の理由(cmdを捨てるべき)
-
PowershellによるWindowsログのクエリ方法
-
PowerShellで管理者権限でアプリケーションを起動する方法
-
サーバーの接続状態を監視するためのPowershellの実装
-
Powershellスクリプトで条件付きブレークポイントを使用する例
-
システム上の停止可能な全サービスを取得するPowershell
-
Powershellで "確認プロンプト "をブロックする方法
-
PowershellでWebページを開く例
-
PythonでPowerShellを呼び出してbatファイルをリモート実行する例
-
PowerShellスクリプトファイルをcmdで直接実行する方法