陈佩斯小品全集高清,衢州一中教师招聘,灰烬审判军军需官
最近在做项目的时候遇到一种情:用c#程序以管理员权限去执行一个bat文件,且此bat文件里面有cd命令来进入文件的下一级目录,比如:
echo test begin cd test1 setup1.exe cd test2 setup2.exe echo test finished echo off
然后在用c#程序运行的时候,如果用管理员权限去执行,能调起bat,但是无法去执行bat文件中的setup1.exe和setup2.exe。
c#代码:
using (process proc = new process()) { string command = @"c:\users\danvy\desktop\script\test.bat"; proc.startinfo.filename = command; proc.startinfo.workingdirectory = path.getdirectoryname(command); //run as admin proc.startinfo.verb = "runas"; proc.start(); while (!proc.hasexited) { proc.waitforexit(1000); } }
如果不用管理员运行就可以指定到setup1.exe和setup2.exe(屏蔽掉proc.startinfo.verb = "runas";)。
后来在上咨询了别人后,终于找到原因和解决方法。
原因:以管理员权限runas运行后,其实cmd.exe是在%windir%/system32/下,即使你已经定义了startinfo.workingdirectory的信息;这样一来在执行bat文件中的cd命令时候就找不到cd xxx的路径了,从而导致无法执行后面的exe文件了。
解决方案:在调用cmd去执行的时候,用此方法:cmd.exe /c "cd place_your_working_dir_here && test.bat",这样就能执行成功。
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
Blazor server side 自家的一些开源的, 实用型项目的进度之 CEF客户端
.NET IoC模式依赖反转(DIP)、控制反转(Ioc)、依赖注入(DI)
vue+.netcore可支持业务代码扩展的开发框架 VOL.Vue 2.0版本发布
网友评论