PowerShell实现查询打开某个文件的默认应用程序_PowerShell

许多文件扩展名和一个可执行应用程序绑定。正因为这样你才可以使用Invoke-Item打开一个文档。

要找出一个给定后缀名的文件是由那个默认引用程序打开它,并不麻烦。我们可以使用Windows系统中的注册表,自行编程解决。但是在扫描注册表时,要稍微留意一下32位和64位机器的问题,这不是本文重点,点到为止。

另外一种途径,稍显旁门左道,调用Windows API。下面的例子会演示如何调用。采取这种途径最大的优势是借力于操作系统。而你的付出成本只是用C#代码间接调用Windows API中的函数而已:

$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证书文件,程序会崩溃。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索文件
, 查询
, powershell
, 打开
默认应用程序
win10默认应用程序、应用程序池默认设置、默认信息应用程序、默认短信应用程序为空、应用程序池默认属性,以便于您获取更多的相关知识。

时间: 2024-09-09 17:57:09

PowerShell实现查询打开某个文件的默认应用程序_PowerShell的相关文章

PowerShell实现查询打开某个文件的默认应用程序

  这篇文章主要介绍了PowerShell实现查询打开某个文件的默认应用程序,本文通过C#调用Windows API来实现这个需求,需要的朋友可以参考下 许多文件扩展名和一个可执行应用程序绑定.正因为这样你才可以使用Invoke-Item打开一个文档. 要找出一个给定后缀名的文件是由那个默认引用程序打开它,并不麻烦.我们可以使用Windows系统中的注册表,自行编程解决.但是在扫描注册表时,要稍微留意一下32位和64位机器的问题,这不是本文重点,点到为止. 另外一种途径,稍显旁门左道,调用Win

PowerShell实现在多个文件中检索关键字功能_PowerShell

这几天在看Powershell,感觉挺强大的,一个小任务,是用powershell实现多个文件中检索万行记录的脚本.刚开始想用用Get-Content 结合Where-Object来实现,发现检索的结果太慢,而且检索的条目显示出来后不知道来自哪个文件,这个虽然也容易实现,但是经过对多种方法的探索,我发现竟然一条强大的命令竟然可以实现所有这些需求,而且超快的. 一般用于IIS日志分析,由于主要是介绍这个PS命令的,IIS日志是从服务器端抓取的,这里仅就是测试用的一半数据. 首先进入到相应目录,查看

PowerShell中查询错误编号信息的2个方法_PowerShell

有时候,一些本地命令,比如net.exe,在执行过程中,会返回数字编号形式的错误信息.很郁闷的是,我们不知道这些数字代表什么意思.以前,我们可以使用如下的方式去获取数字代表的信息: 复制代码 代码如下: PS> net helpmsg 3534 The service did not report an error. PS> net helpmsg 1 Incorrect function. PS> net helpmsg 4323 The transport cannot access

wps安装后文件的默认打开方式还是office解决方法

不知道大家现在是不是和小编一起都已经使用WPS 2013了呢?不过金山WPS Office兼容微软Office文档,所以安装wps后文件默认打开方式还是office,这可怎么办呢?下面为大家带来解决方法. 安装wps后文件的默认打开方式还是office解决方法: 1. 点击开始→控制面板,选择大图标,找到默认程序; 2. 进入默认程序后 选择 将文件类型或协议与程序关联; 3. 点击一下当前默认值,即可按照当前的默认值排序 找到 MicroSoft Office 并双击此项目; 4. 在弹出的对

如何更改WPS安装后文件的默认打开方式

  不知道大家现在是不是已经使用WPS 2013了?不过金山WPS Office兼容微软Office文档,所以安装wps后文件默认打开方式还是office,这可怎么办呢?下面为大家带来解决方法. 安装WPS后文件的默认打开方式是office解决方法: 步骤一. 点击开始→控制面板,选择大图标,找到默认程序; 步骤二.进入默认程序后 选择 将文件类型或协议与程序关联; 步骤三.点击一下当前默认值,即可按照当前的默认值排序 找到 MicroSoft Office 并双击此项目; 步骤四.在弹出的对话

OS X如何更改文件的默认打开方式

  和使用Windows PC一样,人们在Mac电脑中往往也需要用多种应用开启同一种文件.并且,由于环境.习惯以及个人喜好不同,用户常常会希望更改某种文件的默认打开方式.在OS X系统下,进行这样的调整其实非常简单: 以PDF文件为例.在文件图标上点击鼠标右键(或按住Control键单击),即可在弹出菜单的"打开方式"中看到默认开启途径,以及其他可以打开这类文件的应用列表. 在菜单中点击"显示简介",即可弹出文件信息摘要窗口.在打开方式一栏的下拉菜单中,可以看到与前

如何更改 Mac 文件的默认打开方式

  方法 1. 更改某一个文件的默认打开方式 第一步:右键单击该文件. 第二步:按下 Option 键,你会看到「打开方式」选项变成了「始终以此方式打开」. 第三步:选择「始终以此方式打开」列表内的某一个应用程序. 那么该文件应该在你刚刚选择的应用程序(本例为 Pixelmator)内打开,并且,该文件以后也会默认以这个应用程序打开. 注:它仅适用于你所选择的这一个文件,并不适用于其他文件,包括同一类型的文件. 方法 2. 更改同类型文件的默认打开方式 第一步:右键单击该文件,然后选择「显示简介

如何更改Mac文件的默认打开方式?

  熟悉Mac电脑的用户都知道,在 OS X 中,Finder 存储的文件总会以指定的某个默认应用程序打开,比如图片类型的文件默认以「预览」打开.但由于PC6小编经常需要使用图片编辑工具 PS打开图片类型的文件,每次都要右键单击某张图片,然后在「打开方式」下拉列表中选择 Photoshop.那么我们有没有办法更方便做到这一点?或者说能不能让它默认就使用 Photoshop 打开呢?下面PC6小编教大家如何让某个 / 某类文件始终以你所指定的应用打开. 第一步:右键单击该文件,然后选择「显示简介」

Mac OS文件的默认打开方式怎么更改

下面以图片为例.在文件图标上点击鼠标右键,即可在弹出菜单的"打开方式"中看到默认开启途径,以及其他可以打开这类文件的应用列表. 第一步:在菜单中点击"显示简介",即可弹出文件信息摘要窗口.在打开方式一栏的下拉菜单中,可以看到与前面一致的列表. 第二步:找到「打开方式」项目,点击倒三角选择你想指定的默认应用程序. 第三步:单击「全部更改」按钮即可生效. 注:要恢复到原来 OS X 指定的默认应用程序,只需再次按照上述步骤,并选择原来的应用程序即可.