System.ComponentModel.Win32Exception:拒绝访问

调试.NET Framework 4.6项目,通过创建新进程在程序中调用Program Files下的其他可执行程序,运行报错:

System.ComponentModel.Win32Exception:‘拒绝访问’

System.ComponentModel.Win32Exception:‘Access is denied’

 (图片源自客户公开,非实际项目,请勿对号入座。下述截图与该图片非同一演示项目)

修复方法如下:

右键程序集打开属性窗口,切换到“安全性”设置标签页,其中有一个“启用 ClickOnce 安全性设置”,勾选后再反勾选该复选框。如下图:

 

回到解决方案资源管理器中,就可以找到 app.manifest 文件。勾选“启用 ClickOnce 安全性设置”是为了让VS生成这个文件,取消勾选是为了支持后面对 requestedExecutionLevel 的设置。 

 打开 app.manifest,修改requestedExecutionLevel设置为highestAvailable

<requestedExecutionLevel  level="highestAvailable" uiAccess="false" />

如下图:

 

三个level的功能如下:

asInvoker:应用程序就是以当前的权限运行。

highestAvailable:应用程序以当前用户可以获得的最高权限运行。

requireAdministrator:应用程序仅以系统管理员权限运行。

我们将其改为 requireAdministrator

此时再次调试程序时,VS会提示“此任务要求应用程序具有提升的权限”,点击“使用其他凭据重新启动”即可。

 VS重启后,会有一个“管理员”标记,根据版本不同,界面有所区别。

      

 左图为2022版本,右图为2017版本,显示样式有所区别。

 

设置完成,开捉!颤抖吧,虫子们!

 

By Lionden.

posted on 2023-04-21 22:49  LIONDEN  阅读(3045)  评论(0编辑  收藏  举报

导航