如何通过应用清单让Win C++控制台程序默认以AppContainer运行?
Win C++控制台程序自动以AppContainer身份运行的实现问题
结论先行
没法通过应用清单直接声明让控制台EXE双击就自动以AppContainer身份运行——requestedExecutionLevel只支持指定管理员、标准用户这类权限,根本没有对应AppContainer的配置项。
为什么不行?
AppContainer是为UWP和打包桌面应用设计的沙箱隔离机制,Windows从底层就没给未打包的原生桌面程序(比如你的控制台程序)留通过清单直接进沙箱的口子。清单里的权限声明和AppContainer的隔离模型完全是两套不搭边的东西。
不用打包的替代方案
- 写个轻量启动器:你提到的
CreateAppContainerProfile是可行的思路。做个极小的启动器EXE,逻辑很简单:先调用接口创建好AppContainer配置,然后用CreateProcess以挂起状态启动你的控制台程序,接着通过SetTokenInformation把进程令牌换成AppContainer的,最后恢复进程运行。用户双击启动器就行,和双击原EXE体验差不多。 - 借助工具快捷启动:用Sysinternals的
PsExec工具,通过命令PsExec.exe -ac <你的AppContainer名称> 你的控制台程序.exe启动,但得用户手动敲命令或者做成快捷方式,没法直接双击原EXE触发。
额外提醒
启动器方案是最贴合你需求的,不用打包,也不用复杂安装,就多一个小启动器文件而已,用户操作成本很低。
内容的提问来源于stack exchange,提问作者elad-ep
相关产品推荐
相关产品推荐

