我想通过读取命令行来确定已知进程使用文件的绝对路径。目前,该进程在命令行中使用相对路径指向各种文件(例如配置文件)。问题在于,如果这些路径与包含可执行文件的文件夹无关,则我没有办法将命令行提供的相对路径转换为绝对路径,因为我不能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”。所以,我无法解析这些路径。
总之,首先,我从WMI查询中使用ManagementObjectSearcher获取了命令行。现在我需要获取启动进程的工作目录,以解析在命令行传递的路径,但是如何获取?
编辑:我忘记了一个关键细节。我想获取另一个进程的工作目录。基本上,我的主程序从另一个程序中收集信息。我能够确定进程ID,因为我知道可执行文件的名称。我还可以确定命令行。现在我必须找到可执行文件启动时的工作目录或当前目录,以便解析命令行的相对路径。我希望我的问题更清晰一些。
例如,两个批处理文件:
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”。所以,我无法解析这些路径。
总之,首先,我从WMI查询中使用ManagementObjectSearcher获取了命令行。现在我需要获取启动进程的工作目录,以解析在命令行传递的路径,但是如何获取?
编辑:我忘记了一个关键细节。我想获取另一个进程的工作目录。基本上,我的主程序从另一个程序中收集信息。我能够确定进程ID,因为我知道可执行文件的名称。我还可以确定命令行。现在我必须找到可执行文件启动时的工作目录或当前目录,以便解析命令行的相对路径。我希望我的问题更清晰一些。