前段时间用C#写了个小程序,用到了第三方的dll,在编译运行后直接闪退,找了半天发现是被windows的dep给拦截了,尝试后很多方法,最终解决了,现在分享给大家!
try1.关闭指定程序的dep保护
在系统→高级系统设置→高级→设置→数据执行保护中,为除下列选定程序之外的所有程序和服务启用DEP,将选定的程序添加到列表中。
ps:我的是win10 64,vs2017,在添加指定程序是提示:
此程序必须在启用数据执行保护(DEP)的情况下运行。你不能关闭此程序的 DEP。
try2.关闭windows dep保护
因为1失败,所以尝试关闭windows的DEP保护,以管理员身份运行,输入 bcdedit.exe /set {current} nx AlwaysOff(如果提示设置元素数据时出错。该值受安全引导策略保护,无法进行修改或删除,那是因为windows安全引导保护导致的,需要在bios中设置security中secure boot为DisEnable,然后重新设置),然后重启,重启后再查看dep保护,整个窗口都是灰色无法修改的,此时可以正常运行原先被拦截的程序。
关于开启dep保护,网上命令是bcdedit.exe/set {current} nx AlwaysOn ,但是我试了没用,我用的是bcdedit.exe/se