C#获取另一个进程的工作目录

Ste*_*ven 8 c# wmi process working-directory

我想通过读取命令行来确定已​​知进程使用的文件的绝对路径.目前,该过程是在命令行中指向各种文件(如配置文件)的相对路径启动的.问题是,如果路径不是相对于包含可执行文件的文件夹,我无法转换命令行提供的相对路径,我不能100%肯定.

例如两个批处理文件:

BATCH 1 CD c:\ test\bin test.exe ..\config\config.ini

BATCH 2 CD c:\ test bin\test.exe config\config.ini

对于批处理文件一,我得到的命令行是"c:\ test\bin\test.exe ..\config\config.ini",对于批处理文件二,我得到"c:\ test\bin\test.exe config\config.ini文件".所以,看到这个我无法解决路径.

无论如何,对于初学者,我使用ManagementObjectSearcher从WMI查询获得命令行.现在我需要从启动进程的工作目录中解析在命令行传递的路径但是如何?

编辑:我忘记了一个关键细节.我想获得另一个进程的工作目录.基本上,我的主程序从另一个程序收集信息.我能够确定进程ID,因为我知道可执行文件的名称.我也可以确定命令行.我现在必须找到可执行文件启动的工作目录或当前目录,这样我就可以解析命令行的相对路径.我希望我能使问题更清楚.

chr*_*166 8

我认为Environment.CurrentDirectory应该为您提供可执行文件的启动目录.它只在流程开始时可靠,因为它可以在以后更改.

或者也许试试吧Process.GetCurrentProcess().StartInfo.WorkingDirectory.我自己没有尝试过,只是在MSDN上查找