satocchiaブログ

satocchiaブログ

PR

×

キーワードサーチ

▼キーワード検索

カレンダー

コメント新着

tomoZo@ Re:Pale Moon日本語化トラブル(06/06) はじめまして。 28.16.0でまたもや提供さ…
satocchia @ Re[1]:Pale Moon日本語化トラブル(06/06) zui_9さんへ 本日、確認しました。ようや…
zui_9 @ Re:Pale Moon日本語化トラブル(06/06) 上記リンク「Githubのプロジェクト」の左…
わたなべ@ Re:powershellコンソール、見づらくありませんか?(08/26) 初めまして、この情報最高です! 背景を白…
y__@ Re:uwscでGUIフォーム(05/12) UWSC 仮掲示板から飛んできました。 HTAで…
2019.07.22
XML
カテゴリ: powershell
拡張子から既定のアプリケーションを探す。
 簡単そうに見えて意外に難しいんです。

 レジストリ、みれば簡単じゃん、って思ったあなた、甘い、甘い。
 そもそも、拡張子とアプリケーションの関連付けはWindowsのバージョンアップに伴って、いろいろ変わってきています。
 特に、最近は、セキュリティ上の理由から、ユーザーがGUIで設定しないといけないようになっていて、一筋縄ではいきません。

 じゃ、どうするか。
 その拡張子のダミーファイルを作って、起動しちゃえばいいじゃん。

 なので、作ってみました。

get-DefaultApplication.ps1


    param(
        [parameter(mandatory=$true)]
        [string]$extension
    )

    if( $extension[0] -ne '.' ){
        $extension=".$extension"
    }
    $Dummy=join-path $env:TEMP "dummy$extension"
    $BeforeStart=[datetime]::Now
    "">$Dummy
    try{

    }catch{
        if( $error -match "この操作に対して指定されたファイルには、アプリケーションが関連付けられていません" ){
            rm $Dummy
            return "NotAssociated"
        }


    $newerProcesses=gwmi win32_process|?{
        $_.ConvertToDatetime($_.CreationDate) -gt $BeforeStart
    }

    if( $pr=($newerProcesses|?{ $_.name -eq "openwith.exe" }) ){
        $pr|%{$_.terminate()}|out-null
        rm $Dummy
        return "NotAssociated"
    }

    if ( $newerProcesses.gettype().name -match "\[\]$" ){
        $oldest=$null
        $newerProcesses|%{
            if (!$oldest){
                $oldest=$_
                return
            }
            if( $_.ConvertToDatetime($_.CreationDate) -lt $oldest.ConvertToDatetime($oldest.CreationDate) ){
                $oldest=$_
                return
            }
        }
        $newerProcesses=$oldest
    }

    $newerProcesses.terminate()|out-null
    rm $Dummy
    $newerProcesses
}
<# 拡張子HTMを調べてみる。
get-DefaultApplication htm
#>





お気に入りの記事を「いいね!」で応援しよう

最終更新日  2019.07.22 20:22:45
コメント(0) | コメントを書く
[powershell] カテゴリの最新記事


■コメント

お名前
タイトル
メッセージ
画像認証
上の画像で表示されている数字を入力して下さい。


利用規約 に同意してコメントを
※コメントに関するよくある質問は、 こちら をご確認ください。


【毎日開催】
15記事にいいね!で1ポイント
10秒滞在
いいね! -- / --
おめでとうございます!
ミッションを達成しました。
※「ポイントを獲得する」ボタンを押すと広告が表示されます。
x
X

© Rakuten Group, Inc.
Design a Mobile Site
スマートフォン版を閲覧 | PC版を閲覧
Share by: