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

.NET 6 WPF中requestedExecutionLevel是否有效?何时生效?

问题解答

1. requestedExecutionLevel是否有效?

它是完全有效的,但它的作用和你测试的场景不匹配,所以你没观察到差异。

2. 它的生效场景是什么?

这个元素的核心作用是控制UAC文件/注册表虚拟化的开关,而非改变Environment.SpecialFolder.LocalApplicationData的路径:

  • 当你保留该元素(哪怕是level="asInvoker"),系统会禁用当前程序的UAC虚拟化机制;
  • 只有当你的程序尝试写入受保护的系统位置(比如C:\Program Files下的目录、HKEY_LOCAL_MACHINE注册表项)时,它的效果才会显现:
    • 若注释该元素,无管理员权限的程序写入系统受保护位置时,系统会自动把数据重定向到用户的VirtualStore目录(C:\Users\MyUser\AppData\Local\VirtualStore),程序不会报错;
    • 若保留该元素,无管理员权限的程序写入系统受保护位置时,会直接抛出权限不足的异常,不会进行重定向。

3. 关于测试中的特殊情况

常规WPF项目

你测试时写入的LocalApplicationData是用户专属的可写目录,不属于系统受保护位置,不管是否开启虚拟化,都会直接写入真实路径C:\Users\MyUser\AppData\Local,所以两种情况下结果一致,这是正常现象。

Windows应用打包项目(MSIX)

这类项目的应用运行在沙箱隔离环境中,Environment.SpecialFolder.LocalApplicationData对应的实际路径是沙箱内部的专属目录(例如C:\Users\MyUser\AppData\Local\Packages\<你的包家族名>\LocalCache),而非系统的LocalApplicationData根目录。你在代码中创建的文件实际存在于沙箱内,直接去系统目录下当然找不到——这和requestedExecutionLevel无关,是MSIX沙箱的固有特性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 00:02:23