如何从带有通配符的字符串中获取Appx全名?

2024-04-22

在 Powershell 中,此命令Get-AppxPackage *name*可以显示包裹的完整详细信息。是否可以使用任何 Windows API 来获得等效结果?

我见过这个question https://stackoverflow.com/q/32150759/8928481以及所有细节封装查询API https://msdn.microsoft.com/en-us/library/windows/desktop/hh446597(v=vs.85).aspx。但它们都需要完整的包名称或正在运行的包进程句柄。这些不适用于通配符字符串。

例如,如果我安装了这个包Microsoft.WindowsCalculator_8wekyb3d8bbwe我可以通过以下方式获取详细信息Get-AppxPackage *Calculator*命令。任何 Windows API 都可以吗?我想避免system() or CreateProcess()类似的东西。


感谢@f6a4 的回答。我采取了相反的方式来实现我的目标。这是我的程序:

我找到一个answer https://stackoverflow.com/a/16189406/8928481找到后面的DLLGet-AppxPacagePowershell 中的 cmdlet。用这个命令(Get-Command Get-AppxPackage).dll,Powershell显示DLL文件路径如下:

C:\Windows\Microsoft.Net\assembly\GAC_MSIL\Microsoft.Windows.Appx.PackageManager.Commands\v4.0_10.0.0.0__31bf3856ad364e35\Microsoft.Windows.Appx.PackageManager.Commands.dll

转到文件资源管理器中的该路径并打开Microsoft.Windows.Appx.PackageManager.Commands.dll任何 .NET 反编译器中的文件。这里我用的是dnSpy https://github.com/0xd4d/dnSpy.git. The Get-AppxManifest命令部分有以下 C# 代码:

protected override void ProcessRecord()
{
    AppxPackage appxPackage = this.packageManager.FindPackage(this.Package);
    if (appxPackage != null)
    {
        string str;
        if (appxPackage.IsBundle)
        {
            str = "\\AppxMetadata\\AppxBundleManifest.xml";
        }
        else
        {
            str = "\\AppxManifest.xml";
        }
        using (FileStream fileStream = new FileStream(appxPackage.InstallLocation + str, FileMode.Open, FileAccess.Read))
        {
            using (XmlReader xmlReader = XmlReader.Create(fileStream, new XmlReaderSettings
            {
                DtdProcessing = DtdProcessing.Ignore
            }))
            {
                XmlDocument xmlDocument = new XmlDocument();
                xmlDocument.Load(xmlReader);
                base.WriteObject(xmlDocument);
            }
        }
    }
}

我使用 Windows API 将该代码转换为类似的 C 代码。这是代码片段:

ExpandEnvironmentStringsW(L"%ProgramFiles%\\WindowsApps", Buffer, MAX_PATH);

swprintf(FirstFile, MAX_PATH, L"%ls\\*", Buffer);

hFile = FindFirstFileW(FirstFile, &fileInfo);
if (hFile != INVALID_HANDLE_VALUE) {
    do {
        if (wcsstr(fileInfo.cFileName, AppxName) != 0) {
            memcpy(PackageName, fileInfo.cFileName, MAX_PATH);
        }
    } while (FindNextFileW(hFile, &fileInfo) != 0);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从带有通配符的字符串中获取Appx全名? 的相关文章

  • 通过另一个列表更新列表(linq)

    我有类 Data 的对象列表 如下所示 class Data int code string name DateTime date update 我还有另一个课程列表 例如 class RefCodes int old code int n
  • 通过 SOAP 的 Gmt php 或 UTC C# 等效项

    is C DateTime UtcNow和 PHPdate c 是等价的 我怀疑 因为当我肥皂时 我得到了 C
  • 如何在管道函数中使用 Write-Progress?

    我正在尝试编写一个函数PowerShell接受管道输入 我想使用显示进度条Write Progress 管道中每个项目的增量 例如 function Write PipelineProgress Cmdletbinding Param Pa
  • C# 和月历,选择多个日期

    我正在制作一个程序 可以帮助人们用 C 为某个部门 预订 订单 他们需要能够选择不同月份的多个日期 我更愿意拥有它 这样他们就可以单击一个日期 然后按住 Shift 键单击另一个日期以选择这两个日期之间的所有日期 并控制单击以进行单选 取消
  • libtool 在 Ubuntu 13.04 上构建 thrift 0.9.1 时出错

    在 Ubuntu 13 04 上构建 thrift 0 9 1 支持 C C java C perl python 时出现此错误 configure 不带任何选项运行 make 不带任何选项运行 Making all in test mak
  • 为什么在 C++ 中声明枚举时使用 typedef?

    我已经很多年没有写过任何 C 了 现在我正试图重新开始 然后我遇到了这个并考虑放弃 typedef enum TokenType blah1 0x00000000 blah2 0X01000000 blah3 0X02000000 Toke
  • 在 Mac OS X 上安装 libxml2 时出现问题

    我正在尝试在我的 Mac 操作系统 10 6 4 上安装 libxml2 我实际上正在尝试在 Python 中运行 Scrapy 脚本 这需要我安装 Twisted Zope 现在还需要安装 libxml2 我已经下载了最新版本 2 7 7
  • 如何查明 .exe 是否正在 C++ 中运行?

    给定进程名称 例如 程序 exe C 标准库没有这样的支持 您需要一个操作系统 API 来执行此操作 如果这是 Windows 那么您将使用 CreateToolhelp32Snapshot 然后使用 Process32First 和 Pr
  • 以下 PLINQ 代码没有改进

    我没有看到使用以下代码的处理速度有任何改进 IEnumerable
  • make_shared<>() 中的 WKWYL 优化是否会给某些多线程应用程序带来惩罚?

    前几天我偶然看到这个非常有趣的演示 http channel9 msdn com Events GoingNative GoingNative 2012 STL11 Magic Secrets作者 Stephan T Lavavej 其中提
  • 是否可以在Linux上将C转换为asm而不链接libc?

    测试平台为Linux 32位 但也欢迎 Windows 32 位上的某些解决方案 这是一个c代码片段 int a 0 printf d n a 如果我使用 gcc 生成汇编代码 gcc S test c 然后我会得到 movl 0 28 e
  • 在 C++ 代码 gdb 中回溯指针

    我在运行 C 应用程序时遇到段错误 在 gdb 中 它显示我的一个指针位置已损坏 但我在应用程序期间创建了 10 万个这样的对象指针 我怎样才能看到导致崩溃的一个 我可以在 bt 命令中执行任何操作来查看该指针的生命周期吗 谢谢 鲁奇 据我
  • 选择 asp.net CheckBoxList 中的所有项目

    ASP NET 和 C 我想要一个带有 全选 项目的复选框列表 当这个特定项目是 已选择 所有其他都将被选择 也 当选择被删除时 这个项目 也将来自所有人 其他物品 选中 取消选中 任何其他项目只会有一个 对特定项目的影响 无论选择状态如何
  • 测验;这个编译了吗?如果是的话它会返回什么(我知道答案)

    我最近发现这个错字 if name find string npos 显然开发者的意思是输入 if name find string npos 但令我惊讶的是发现错误甚至编译 Wall Werror 没有尝试过 pedantic 那么 咖啡
  • C++ 模板可以提供 N 个给定类的公共父类吗?

    我正在寻找一个 C 模板 它可以找到一组给定类的共同父级 例如 class Animal class Mammal public Animal class Fish public Animal class Cat public Mammal
  • 在 Qt 中播放通知(频率 x)声音 - 最简单的方法?

    Qt 5 1 或更高版本 我需要播放频率为 x 的通知声音 n 毫秒 如果我能像这样组合音调那就太好了 1000Hz 持续 2 秒 然后 3000Hz 持续 1 秒 最简单的方法是使用文件 WAV MP3 例如如此处所述 如何用Qt播放声音
  • 在二进制数据文件的标头中放入什么

    我有一个模拟 可以读取我们创建的大型二进制数据文件 10 到 100 GB 出于速度原因 我们使用二进制 这些文件依赖于系统 是从我们运行的每个系统上的文本文件转换而来的 所以我不关心可移植性 当前的文件是 POD 结构的许多实例 使用 f
  • 使用 boost 异步发送和接收自定义数据包?

    我正在尝试使用 boost 异步发送和接收自定义数据包 根据我当前的实现 我有一些问题 tcpclient cpp include tcpclient h include
  • 在 C 中使用 #define 没有任何价值

    If a define没有任何价值地使用 例如 define COMMAND SPI 默认值是0吗 不 它的评估结果为零 从字面上看 该符号被替换为空 然而 一旦你有了 define FOO 预处理器条件 ifdef FOO现在将是真的 另
  • 如何在c中断言两个类型相等?

    在 C 中如何断言两种类型相等 在 C 中 我会使用 std is same 但搜索 StackOverflow 和其他地方似乎只能给出 C 和 C 的结果 在C中没有办法做到这一点吗 请注意 这不是询问变量是否具有某种类型 而是询问两个类

随机推荐

  • 在 SD 卡上安装 Android 应用

    我开发了一个可以安装在 SD 卡或移动内存中的应用程序 我用了android installLocation属性设置为 auto 现在我面临的问题是 当我在设备上运行应用程序时 它显示我已启用 移动到 SD 卡 按钮 但是当我将应用程序上传
  • 如何使用 tf.data.Dataset.from_generator() 将参数发送到生成器函数?

    我想创建多个tf data Dataset使用from generator 功能 我想向生成器函数发送一个参数 raw data gen 这个想法是生成器函数将根据发送的参数产生不同的数据 这样我想raw data gen能够提供训练 验证
  • 在 C# 中,为什么不能在 foreach 循环中修改值类型实例的成员?

    我知道值类型应该是不可变的 但这只是一个建议 而不是规则 对吗 那么为什么我不能做这样的事情 struct MyStruct public string Name get set public class Program static vo
  • 如何去掉ListView添加item的动画?

    我有一个ListView我编辑了它ItemContainerStyle修改某些样式 但我不知道如何在添加项目时删除那个烦人的动画 With an ItemsControl 当您添加新项目时 它会立即出现 没有任何动画 With ListVi
  • 如何完全清除所有 matplotlib 图的内存

    我有一个数据分析模块 其中包含调用的函数matplotlib pyplotAPI 多次 每次运行最多生成 30 个数字 这些数字在生成后会立即写入磁盘 因此我需要将它们从内存中清除 目前 在每个函数结束时 我都会 import matplo
  • 如何使用 drf-yasg 自动生成的 swagger 页面配置“HTTPS”方案?

    我知道在传统的 swagger YAML 文件中 我们可以使用以下方式定义方案 schemes http https OR schemes http https 但是 我如何使用自动生成的 swagger 页面做同样的事情drf yasg图
  • Android MediaRecorder 和 setOutputFile

    我阅读了 Android SDK 发现 MediaRecorder 类可以从相机 音频或其他源获取输入并对其进行压缩 通过 setOutputFile 方法 您可以指定要存储数据的位置 文件或 URI 但是如果我想将该数据存储在内存缓冲区中
  • 将字符向量列表转换为数据帧

    我的输出 a 看起来像 str a List of 8883695 chr 1 3 20MICRONS A ACCRUALS chr 1 3 20MICRONS A ACCRUALS chr 1 3 20MICRONS A ACCRUALS
  • 检查针对 SQL Server 数据库的 LINQ 查询

    有什么方法可以在 NET 中查看我们正在触发的针对数据库的 LINQ 查询吗 例如 我正在 LINQ 中编写一个查询 我想看看触发了什么 SQL 查询来与数据库进行通信 有没有 Visual Studio 窗口或其他方式 你在寻找类似的东西
  • 带 python 列表的循环引用

    有人可以解释一下吗 gt gt gt x x 0 0 gt gt gt x gt gt gt x is x 0 True gt gt gt x 0 0 0 0 0 0 0 gt gt gt x in x True what is 这只是 P
  • OpenCV 3.0.0 使用 FFMPEG 时出错

    我使用 OpenCV 一段时间了 但是 我最近将系统更改为没有任何管理员权限的集群 问题是这样的 在我的主文件夹中 我安装了 FFMPEG ffmpeg 网站上提供的最新稳定版本 我将它安装在 HOME 中 因此在 HOME lib 中安装
  • sso 用户的 s3 存储桶策略

    我想允许特定角色 test role 在特定存储桶 test bucket 上执行所有 s3 操作 拒绝为所有其他人提供桶 我写的 s3 策略 Version 2012 10 17 Id Policy1601973417173 Statem
  • 以编程方式发送自动电子邮件[重复]

    这个问题在这里已经有答案了 我想以编程方式发送电子邮件 我尝试了以下代码 最终意图 emailIntent 新意图 android content Intent ACTION SEND emailIntent setType plain t
  • iOS:Firebase 令牌返回 null

    我目前正在尝试按照 Firebase 官方文档来实现 Firebase Cloud Messaging 我已在启用推送通知的情况下解决了证书和配置文件的问题 我还使用 CocoaPods 安装了所有必要的框架 FirebaseMessagi
  • 将 LinkBut​​ton 的 OnClick 事件设置为代码隐藏中的方法

    我正在从我的代码隐藏构造一个 LinkBut ton 我需要将 onclick 分配给一个方法 并用它传递一个参数 到目前为止我有这个 LinkButton lnkdel new LinkButton lnkdel Text Delete
  • 在 FIFO 上写入“复杂”结构

    我正在使用 C 语言与客户端服务器进行某种 餐厅 实现 我正在尝试通过 FIFO 发送以下结构 typedef struct int numtable table number to send answer char timestamp 2
  • 没有带有常量“模板参数”的 F# 泛型?

    我突然想到 F 泛型似乎不接受常量值作为 模板参数 假设有人想创建一种类型RangedInt这样 它的行为类似于 int 但保证只包含整数值的子范围 一种可能的方法是建立受歧视的工会 类似于 type RangedInt Valid of
  • 使用 ggplot 约束 stat_smooth 中的斜率(绘制 ANCOVA)

    Using ggplot 我试图绘制 ANCOVA 的结果 其中两个线性分量的斜率相等 即lm y x A 默认行为为geom smooth method lm 是为每个因子的每个水平绘制单独的斜率和截距 例如 有两个级别A library
  • 具有两个以上固定效应的 Python 面板数据回归

    我有一个面板数据库 想运行考虑固定效应的回归 使用Panel Ols 时 两个固定效果可以正常工作 我的代码如下所示 df countyCode pd Categorical df countyCode df state pd Catego
  • 如何从带有通配符的字符串中获取Appx全名?

    在 Powershell 中 此命令Get AppxPackage name 可以显示包裹的完整详细信息 是否可以使用任何 Windows API 来获得等效结果 我见过这个question https stackoverflow com