You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows是否有类macOS的API,可通过应用名/标识符获取EXE文件路径?

好问题!在Windows上确实有不少不需要遍历文件系统就能获取EXE完整路径的方案,刚好对应你提到的macOS通过Bundle ID找App路径的需求,我给你梳理几个常用的:

Windows下获取EXE路径的高效方案

1. 用AppUserModelID(最接近Bundle ID的标识符)

Windows里的AppUserModelID是给应用分配的唯一标识,和macOS的Bundle ID逻辑几乎一致。你可以通过SHGetApplicationInfo这个Win32 API直接从系统注册信息里提取对应EXE的路径,完全不用扫描文件系统。

举个C++的示例代码:

#include <shlobj.h>
#include <shlwapi.h>
#include <strsafe.h>

HRESULT GetExePathFromAppUserModelID(LPCWSTR appUserModelID, LPWSTR exePath, DWORD bufferSize) {
    APPLICATION_INFO appInfo = {0};
    appInfo.cbSize = sizeof(APPLICATION_INFO);
    
    HRESULT hr = SHGetApplicationInfo(appUserModelID, SHGETAPPINFO_GET_EXE_PATH, &appInfo);
    if (SUCCEEDED(hr)) {
        StringCchCopy(exePath, bufferSize, appInfo.pszExePath);
        CoTaskMemFree(appInfo.pszExePath); // 记得释放系统分配的内存
    }
    return hr;
}

2. 读取注册表App Paths项(针对传统桌面应用)

绝大多数正规安装的桌面应用,都会在注册表的HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\App Paths下注册自己的路径。你只需要查询对应EXE文件名的键值,就能直接拿到完整路径。

比如用PowerShell快速获取Chrome的路径:

(Get-ItemProperty -Path 'HKLM:\Software\Microsoft\Windows\CurrentVersion\App Paths\chrome.exe').'(default)'

这个方法本质是读系统预存的注册信息,效率很高,不用遍历磁盘。

3. UWP应用的专属方法

如果是UWP(通用Windows平台)应用,它们用的是Package Family Name作为唯一标识。你可以用Windows SDK里的PackageManager类来获取安装路径,同样不需要扫描文件系统。

C#示例代码:

using Windows.Management.Deployment;
using System.Linq;

public string GetUwpAppInstallPath(string packageFamilyName) {
    PackageManager packageManager = new PackageManager();
    var targetPackage = packageManager.FindPackagesForUser(string.Empty, packageFamilyName).FirstOrDefault();
    return targetPackage?.InstalledLocation.Path;
}

注意事项

这些方法都依赖应用已经在系统中完成了正确的注册(不管是AppUserModelID、注册表项还是UWP包注册)。如果是绿色版未注册的应用,那可能还是得用文件搜索,但对于正规安装的应用,这些方案都能快速拿到路径。

内容的提问来源于stack exchange,提问作者Bri Bri

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:34:06