如何确定哪些正在运行的应用程序正在使用 .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)?