win32程序通过命令行调用uwp程序

//枚举所有uwp程序,并判断指定显示名称的uwp程序是否存在

//displayname  uwp程序的显示名称    containername uwp程序的PackageFamilyName,也就是结构体中的appContainerName

typedef struct _INET_FIREWALL_APP_CONTAINER
{
    SID *appContainerSid;
    SID *userSid;
    LPWSTR appContainerName;
    LPWSTR displayName;
    LPWSTR description;
    INET_FIREWALL_AC_CAPABILITIES capabilities;
    INET_FIREWALL_AC_BINARIES binaries;
    LPWSTR workingDirectory;
    LPWSTR packageFullName;
} INET_FIREWALL_APP_CONTAINER, *PINET_FIREWALL_APP_CONTAINER;

BOOL IsExistSpecificUWP(LPTSTR displayname, std::wstring& containername)
{
    BOOL bRet = FALSE;
    HMODULE FirewallAPIModule;
    FirewallAPIModule = (LoadLibrary(L"FirewallAPI.dll"));

    auto EnumAppContainersProc = pNetworkIsolationEnumAppContainers(GetProcAddress(FirewallAPIModule, "NetworkIsolationEnumAppContainers"));
    auto FreeAppContainersProc = pNetworkIsolationFreeAppContainers(GetProcAddress(FirewallAPIModule, "NetworkIsolationFreeAppContainers"));
    DWORD pdwNumPublicAppCs = 0;
    PINET_FIREWALL_APP_CONTAINER ppPublicAppCs = NULL;
    if (nullptr == EnumAppContainersProc || nullptr == FreeAppContainersProc)
    {
        return bRet;
    }

    HRESULT Hr = EnumAppContainersProc(0, &pdwNumPublicAppCs, &ppPublicAppCs);
    if (Hr != ERROR_SUCCESS)
    {
        return bRet;
    }

    for (int i = 0; i < pdwNumPublicAppCs; i++)
    {
        auto appContainer = ppPublicAppCs[i];
        if (_tcscmp(appContainer.displayName, displayname) == 0)
        {
            containername = appContainer.appContainerName;
            LOG_INFO(L"exist uwp containername=%s", containername.c_str());
            bRet = TRUE;
        }
    }

    FreeAppContainersProc(ppPublicAppCs);
    FreeLibrary(FirewallAPIModule);
    return bRet;
}

通过cmd命令调起该uwp程序(注意叹号前后的内容)

explorer.exe shell:appsFolder\microsoft.windowscommunicationsapps_8wekyb3d8bbwe!microsoft.windowslive.mail

                                                         ^Here is the PackageFamilyName                                 !^Here is the app ID

 

打开资源管理器,输入shell:appsFolder可以查看本机的所有uwp程序

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值