RT,想要做一个脚本文件,可以做到重启正在运行的应用程序。试过通过名称获取机器上的所有进程,但是只能kill这个进程,如果要重新打开要通过应用程序的所在路径,感觉这样用起来不方便。有没有大神可以赐教。。。
System.Diagnostics.Process 查找进程
MainModule.FileName 进程的属性,即进程的exe路径
注意32位和64位程序好像有点不同
MainModule.FileName是64位的,32位的进程访问不了
@凌晨4time: 记得是有这个问题,没深究windows的机制,不确定重定向行不行。
不行就绕开嘛,用64位的进程访问不就行了:
自己的主进程(32)->启动自己的子进程(64)->查询
主进程与子进程用命名管道通讯不就完了,wcf包装的挺好。
@凌晨4time: https://stackoverflow.com/questions/9501771/how-to-avoid-a-win32-exception-when-accessing-process-mainmodule-filename-in-c
这个呢?我没试过
@日暮青色:主要是因为权限的问题。你给的链接提出的解决方案可以获得64位进程的名称而不是路径。我用了System.IO.Path.Combine(),可以获得路径但是感觉是一个比价笨的办法。
还是谢谢帮忙了
@凌晨4time: 那最好的方法还是多进程(32、64)查询,结合进程通讯做呗。
类似这种 wmic process where caption="360se.exe" get caption,commandline /value
使用wmic可以获取进程的完整行,直接启动就行
wmic可以关闭进程,但是关闭后进程中就没有这个应用程序的信息了,怎么开启?
你不想 用路径 那么先设置环境变量就行了。
set
kill
start(or programName)