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ビットプロセスとは異なるレジストリの部分を読み取ります。ここで起こっているOSリダイレクトの魔法がい​​くつかあります。

最善の解決策は、両方の場所にキーを追加することです。

詳細については、MSDNのレジストリにある32ビットおよび64ビットのアプリケーションデータを参照してください。

于 2012-09-18T20:21:44.960 に答える