1

BHO から Windows レジストリの情報を読み書きする必要があります。Windows Vista/7 では、HKEY_CURRENT_USER\Software\AppDataLow\Software の下に新しいキーを作成します。これは、保護モードでも問題なく動作します。

ただし、XPでは動作しません。レジストリを HKEY_CURRENT_USER\Software\Classes\Software または HKEY_CURRENT_USER\Software に変更しようとしましたが、うまくいきませんでした。

BHO から Windows XP で使用する適切なレジストリ キーは何ですか?

IEGetWriteableHKCU は Windows XP には存在しません。Windows Vistaで最初に追加されました。

4

2 に答える 2

4

Vista より前は、別のアプローチを使用する必要があります... BHO のインストール中に、BHO から書き込み可能にしたいキーを Windows/IE に伝える必要があります...

これを処理する API ファミリ全体があります (MSDN によれば、WinXP SP2 以降でサポートされています)。

于 2012-02-28T18:57:21.603 に答える
3

IE 7、8、9、(デスクトップ)10 は、レジストリの書き込みを特別な「書き込み可能」セクションに制限する「保護モード」でタブを実行します。それへのポインタを IE に要求する必要があります。

(C#)

// C# PInvoke declaration for needed IE method.
[DllImport("ieframe.dll")]
public static extern int IEGetWriteableHKCU(ref IntPtr phKey); 

// ...
        // somewhere inside other method:
        IntPtr phKey = new IntPtr();
        var answer = IEGetWriteableHKCU(ref phKey);
        RegistryKey writeable_registry = RegistryKey.FromHandle(
            new Microsoft.Win32.SafeHandles.SafeRegistryHandle(phKey, true)
        );
        RegistryKey registryKey = writeable_registry.OpenSubKey(RegistryPathString, true);
        if (registryKey == null) {
            registryKey = writeable_registry.CreateSubKey(RegistryPathString);
        }
        registryKey.SetValue("Mode", mode);
        writeable_registry.Close();

見る:

保護モードについて: http://www.codeproject.com/Articles/18866/A-Developer-s-Survival-Guide-to-IE-Protected-Mode

拡張保護モードについて: http://blogs.msdn.com/b/ieinternals/archive/2012/03/23/understanding-ie10-enhanced-protected-mode-network-security-addons-cookies-metro-desktop.aspx

于 2012-10-17T15:46:10.667 に答える