如何确定哪些正在运行的应用程序正在使用 .Net

Posted

技术标签:

【中文标题】如何确定哪些正在运行的应用程序正在使用 .Net【英文标题】:How to determine which running applications are using .Net 【发布时间】:2014-11-06 09:40:03 【问题描述】:

我有一个使用需要 .Net 4.0 的第三方 dll 的应用程序。 因此,我使用 iexpress 将 .Net exe 与使用 Wix 创建的安装程序一起打包。 但是,后来我知道它需要在安装 .Net 4.0 后重新启动机器,因为它的某些文件可能正在使用中。 我不希望我的用户在安装我的应用程序后重新启动机器。 我认为更好的方法是预先显示所有正在运行的应用程序正在使用.Net,以便他们可以关闭这些应用程序并继续安装而无需重新启动。

如何检测这些正在使用 .Net 的正在运行的应用程序?

谢谢

【问题讨论】:

【参考方案1】:

我认为您必须执行类似于 Process Explorer 的操作:

    使用CLSID_CLRMetaHost 调用CLRCreateInstance 函数。 枚举系统上的每个进程,然后为每个进程调用ICLRMetaHost::EnumerateLoadedRuntimes方法。 对于每个返回的运行时,调用ICLRRuntimeInfo::GetVersionString方法并检查它是否返回了.NET 4.0的版本字符串。

【讨论】:

以上是关于如何确定哪些正在运行的应用程序正在使用 .Net的主要内容,如果未能解决你的问题,请参考以下文章

如何检测正在使用哪个 .NET 运行时(MS 与 Mono)?

如何确定当前在 ASP.Net 中是不是有任何文件正在上传?

如何确定我的 R 安装正在使用哪些矩阵库?

确定安装了哪些 NET Framework 版本

将应用程序部署到 GAE 时如何选择应部署哪些文件?

如何确定类中的哪些属性应包含在 UPDATE 动态查询中?