运行C#控制台程序时触发Access denied异常,寻求解决办法
.NET启动外部EXE遇Access Denied问题排查方案
检查目标EXE本身权限
别只看目录权限,右键目标EXE→属性→安全,确认当前用户、管理员组拥有读取&执行、读取权限,必要时添加完全控制权限。如果EXE在Program Files这类系统保护目录,建议先复制到非系统目录(比如D盘自定义文件夹)再测试,避免UAC限制。核对进程启动代码
确保代码里的EXE路径正确,优先用绝对路径替代相对路径,避免路径解析错误。比如:var startInfo = new ProcessStartInfo(@"D:\Test\TargetApp.exe") { WorkingDirectory = @"你的项目根目录绝对路径" }; Process.Start(startInfo);同时检查是否误把目录路径当成EXE路径,或者漏写了
.exe后缀。排查安全软件拦截
暂时关闭杀毒软件、防火墙或第三方安全工具,这类软件常拦截未签名的自制EXE。如果关闭后能正常启动,把目标EXE或项目目录加入安全软件白名单即可。检查UAC与权限继承
右键EXE→属性→兼容性,取消勾选“以管理员身份运行此程序”,避免权限冲突;再检查项目根目录权限的继承性:右键目录→属性→安全→高级,点击“启用继承”重新应用权限。手动验证EXE可执行性
打开命令提示符,直接输入目标EXE的绝对路径运行,如果同样报Access Denied,说明问题出在EXE本身或系统环境,和.NET代码无关;如果能正常运行,再回到代码排查路径或参数问题。
内容的提问来源于stack exchange,提问作者RobG
相关产品推荐
相关产品推荐

