在自己的进程内部,我们可以通过 Main
函数传入的参数,也可以通过 Environment.GetCommandLineArgs
来获取命令行参数。
但是,可以通过什么方式来获取另一个运行着的程序的命令行参数呢?
进程内部获取传入参数的方法,可以参见我的另一篇博客:.NET 命令行参数包含应用程序路径吗?。
.NET Framework / .NET Core 框架内部是不包含获取其他进程命令行参数的方法的,但是我们可以在任务管理器中看到,说明肯定存在这样的方法。
实际上方法是有的,不过这个方法是 Windows 上的专属方法。
对于 .NET Framework,需要引用程序集 System.Management
;对于 .NET Core 需要引用 Microsoft.Windows.Compatibility
这个针对 Windows 系统准备的兼容包(不过这个兼容包目前还是预览版本)。
然后,我们使用ManagementObjectSearcher
和ManagementBaseObject
来获取命令行参数。
为了简便,我将其封装成一个扩展方法,其中包括对于一些异常的简单处理。
使用此方法得到的命令行参数是一个字符串,而不是我们通常使用字符串时的字符串数组。如果你需要将其转换为字符串数组,可以使用我在另一篇博客中使用的方法:
.NET/C# 将一个命令行参数字符串转换为命令行参数数组 args
参考资料
本文会经常更新,请阅读原文: https://walterlv.com/post/get-command-line-for-a-running-process.html ,以避免陈旧错误知识的误导,同时有更好的阅读体验。
如果你想持续阅读我的最新博客,请点击 RSS 订阅,或者前往 CSDN 关注我的主页。
原文地址:https://walterlv.com/post/get-command-line-for-a-running-process.html
.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com