0

我正在使用办公室互操作构建一个 COM 插件。我有从注册表读取许可证密钥的代码。奇怪的是,它在 Excel 2007(64 位)中完美地读取了许可证密钥,但是当我在 Excel 2010(32 位)中运行相同的代码时,从注册表中读取许可证密钥时,它被填充为空字符串。我正在使用此代码来读取许可证密钥:

RegistryKey key = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Plugin\PluginSubFolder");
return (string)key.GetValue("License", "");

我知道这个问题有点模糊,可能是由很多事情引起的,但我不确定从哪里开始调试它。

有什么想法可能导致这种情况吗?我很高兴回答有关代码或问题的任何其他问题。

谢谢!

4

1 回答 1

1

64 位进程读取的注册表部分与 32 位进程不同。这里有一些操作系统重定向魔法。

最佳解决方案是将密钥添加到两个位置。

有关详细信息,请参阅MSDN 上注册表中的 32 位和 64 位应用程序数据。

于 2012-09-18T20:21:44.960 回答