C#程序requestedExecutionLevel设uiAccess=false,VS调试报UIAccess错误
你遇到的这个问题是VS2022在.NET 8调试模式下的一个已知行为,根源在于VS的调试宿主进程权限检测逻辑出现了误判,和你手动配置的manifest无关。下面是几个直接有效的解决办法:
关闭混合调试模式
右键项目 → 属性 → 调试 → 取消勾选启用本机代码调试。默认情况下这个选项是开启的,关闭后VS会直接启动你的应用进程,跳过中间的调试宿主,自然就不会触发UIAccess的误判。直接启动编译好的exe调试
项目属性 → 调试 → 选择启动外部程序,然后选中你项目编译目录下的成品exe(比如bin/Debug/net8.0/你的应用名.exe)。这种方式和你双击运行exe完全一致,权限检测逻辑正常,不会出现错误提示。修改注册表强制调试宿主权限
打开注册表编辑器(运行regedit),找到路径HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\vsdebugger.exe,如果没有这个项就手动新建。然后添加一个DWORD类型的键RequireAdminPrivileges,把值设为1。这个操作让VS的调试宿主进程强制以管理员权限运行,避免权限校验时的误判。
简单来说,直接运行exe时没有VS调试宿主的介入,权限检测完全遵循你配置的manifest;但调试时VS会通过中间进程启动你的应用,这个中间进程的权限逻辑出了问题,才导致UIAccess被误识别为true。
内容的提问来源于stack exchange,提问作者el_zilcho

