获取完全如Windows C#Framework 3.5(不是4.0)中所示的添加删除程序列表

时间:2016-06-14 15:10:15

标签: c#

我尝试过这种方法来获取添加/删除程序的列表但它仍然没有给出确切的列表

在3个地方查看注册表

foo3

代码:

#include <iostream>
struct Foo {
    Foo()
        : x(0)
    {
    }
    Foo(const Foo& foo)
        : x(foo.x + 1)
    {
    }
    int x;
};

Foo bar(Foo foo)
{
    foo.x++;
    return foo;
}

int main()
{
    Foo foo1;
    Foo foo2 = foo1;
    std::cout << "A:" << foo1.x << std::endl;
    std::cout << "B:" << foo2.x << std::endl;
    Foo foo3 = bar(foo1);
    std::cout << "C:" << foo3.x << std::endl;
}

这是4.0解决方案,但不适用于3.5

C#: How to get installing programs exactly like in control panel programs and features?

我错过了什么?

1 个答案:

答案 0 :(得分:0)

这是由于32/64位密钥的自动查询。如果您有.net 4,则可以使用 RegistryView.Registry64 属性强制32位应用程序查询x64密钥

var hklm = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64))
using (var key = hklm.OpenSubKey( key ))
{....}

如果你想在.net 3.5中使用相同的功能,你将不得不写一些安静的代码。有关解决方案,请参阅此文章:Query Registry With .net 3.5

&#34;这也可以在.NET 3.5及之前完成,但这并不容易。  我们必须使用DLLImport并使用RegOpenKeyEx,RegCloseKey和RegQueryValueEx。以下是一些示例。&#34;