我想使用 C# 获取我计算机上所有 progis 的列表。我知道我可以扫描注册表,如下所示:
var regClis = Registry.ClassesRoot.OpenSubKey("CLSID");
var progs = new List<string>();
foreach (var clsid in regClis.GetSubKeyNames()) {
var regClsidKey = regClis.OpenSubKey(clsid);
var ProgID = regClsidKey.OpenSubKey("ProgID");
var regPath = regClsidKey.OpenSubKey("InprocServer32");
if (regPath == null)
regPath = regClsidKey.OpenSubKey("LocalServer32");
if (regPath != null && ProgID != null) {
var pid = ProgID.GetValue("");
var filePath = regPath.GetValue("");
progs.Add(pid + " -> " + filePath);
regPath.Close();
}
regClsidKey.Close();
}
代码来自这个博客。
有谁知道是否有更简单的方法?此外,据我了解这是如何工作的,上面的代码可能只会给我进程内的 com. 如果我也需要进程外的 progid 怎么办?
提前致谢