启动原生Windows应用遇权限拒绝:ScreenSketch.exe无法访问WindowsApps目录
解决访问C:\Program Files\WindowsApps权限拒绝并启动ScreenSketch.exe的问题
你碰到的这个权限问题其实是系统的安全设计导致的——C:\Program Files\WindowsApps是UWP应用的专属安装目录,哪怕你用管理员权限运行程序,也没法直接遍历或访问里面的文件,所以用Directory.GetFiles去搜ScreenSketch.exe这条路根本走不通。
给你两个靠谱的替代方案,完全不用碰这个受保护的目录:
方案一:用URI协议一键启动
ScreenSketch支持系统内置的URI协议,直接调用就能启动,代码超简单:
System.Diagnostics.Process.Start("ms-screenclip:");
这个方法完全绕开了权限问题,系统会自动帮你定位并启动ScreenSketch,不用管它装在哪个角落。
方案二:通过Windows Runtime API启动(适合桌面应用)
如果你的项目是WPF或者WinForms这类桌面应用,可以借助Windows Runtime的API来启动指定UWP应用。ScreenSketch的官方应用ID是Microsoft.ScreenSketch_8wekyb3d8bbwe!App,你也可以用对应的URI来启动:
using Windows.System; // 先给项目添加Windows引用:右键项目 -> 添加 -> 引用 -> 勾选Windows SDK相关组件 await Launcher.LaunchUriAsync(new Uri("ms-screenclip:"));
这个方法同样是通过系统原生机制启动应用,安全又稳定。
千万别做的事:修改WindowsApps权限
虽然网上能搜到修改C:\Program Files\WindowsApps权限的教程,但真的别这么干:
- 这会破坏系统的安全防护,搞不好会导致UWP应用崩溃、系统更新失败
- ScreenSketch的安装路径会跟着系统版本更新变化,就算你现在找到了路径,下次更新后可能就用不了了
所以优先用前两种方案,省心又靠谱。
内容的提问来源于stack exchange,提问作者jssmttibr
相关产品推荐
相关产品推荐

