我尝试过这种方法来获取添加/删除程序的列表但它仍然没有给出确切的列表
在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?
我错过了什么?
答案 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;