国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > PowerShell > 正文

PowerShell實現(xiàn)查詢打開某個文件的默認應用程序

2020-05-30 20:19:39
字體:
來源:轉載
供稿:網(wǎng)友

許多文件擴展名和一個可執(zhí)行應用程序綁定。正因為這樣你才可以使用Invoke-Item打開一個文檔。

要找出一個給定后綴名的文件是由那個默認引用程序打開它,并不麻煩。我們可以使用Windows系統(tǒng)中的注冊表,自行編程解決。但是在掃描注冊表時,要稍微留意一下32位和64位機器的問題,這不是本文重點,點到為止。

另外一種途徑,稍顯旁門左道,調用Windows API。下面的例子會演示如何調用。采取這種途徑最大的優(yōu)勢是借力于操作系統(tǒng)。而你的付出成本只是用C#代碼間接調用Windows API中的函數(shù)而已:

$Source = @" using System;using System.Text;using System.Runtime.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反饋說該方法不能檢測MMC加載項打開的文件,比如cer和pfx證書文件,程序會崩潰。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 稷山县| 旌德县| 洛阳市| 绿春县| 喀喇| 沭阳县| 顺平县| 彝良县| 乌兰浩特市| 连平县| 定远县| 福鼎市| 肃北| 台山市| 巴东县| 瑞昌市| 营口市| 沁源县| 塔城市| 博野县| 安仁县| 隆安县| 吉首市| 沧州市| 鄂州市| 留坝县| 郎溪县| 龙南县| 恩平市| 潮州市| 安宁市| 河源市| 来安县| 花垣县| 依兰县| 特克斯县| 德格县| 浦城县| 施秉县| 兴义市| 新晃|