2012-03-27 14 views
2

.netのWebブラウザコントロールを使用してカスタムブラウザソリューションを開発しています。 IE-Compatibiltyビューを無効にするには、私は、レジストリエントリを設定し ソフトウェア\マイクロソフト\ Internet Explorerの\メイン\ FeatureControlを\ FEATURE_BROWSER_EMULATION:[Sreenshotレジストリエディター] http://zbirk.mirk.at/browserreg.png "スクリーンショット"WebブラウザコントロールがFEATURE_BROWSER_EMULATION regエントリを無視します。

iが値を使用しようとした

:dword = 8000、dword = 8888、dword = 9000ですが、Webブラウザコントロールはこれらのregエントリを無視しているようです。

多分誰かがこの問題を抱えていて、私を助けてくれるかもしれません。

+1

この問題は、VS2010 x64をデバッガで実行しているときに一貫して発生します。ただし、アプリケーションを公開して、.exeを実行した後は、記述したレジストリ設定が適切に反映されます。 – pgfearo

答えて

3

WebBrowserコントロールはこれらのキーを尊重しています。

taskmanは、名前欄にapplication.exe表示される場合がありながら、あなたはexeファイル名をデバッグしている場合はapplication.vshost.exe

は、だから私のアプリケーションではSIはちょうどたびにアプリをキーを作成しようとしていることを忘れないでください走るそれが既に存在しているために作成に失敗した場合、キーを作成すると、アプリケーションを再起動する必要があることをユーザーに通知します。

1

あなたの返信用のThxは、現在動作しています。

彼女は、コードの私の作業の平和です:

public void setIEcomp() 
    { 
     String appname = Process.GetCurrentProcess().ProcessName+".exe"; 
     RegistryKey RK8 = Registry.LocalMachine.OpenSubKey("Software\\Microsoft\\Internet Explorer\\Main\\FeatureControl\\FEATURE_BROWSER_EMULATION",RegistryKeyPermissionCheck.ReadWriteSubTree);    
     int value9 = 9999; 
     int value8 = 8888; 
     Version ver = webBrowser1.Version; 
     int value = value9; 
     try 
     { 
      string[] parts = ver.ToString().Split('.'); 
      int vn = 0; 
      int.TryParse(parts[0], out vn); 
      if (vn != 0) 
      { 
       if (vn == 9) 
        value = value9; 
       else 
        value = value8; 
      } 
     } 
     catch 
     { 
      value = value9; 
     } 
     //Setting the key in LocalMachine 
     if (RK8 != null) 
     { 
      try 
      { 
       RK8.SetValue(appname, value, RegistryValueKind.DWord); 
       RK8.Close(); 
      } 
      catch(Exception ex) 
      { 
       //MessageBox.Show(ex.Message); 
      } 
     } 
    } 
+1

あなたが解決したら、何か答えを受け入れるべきです。あなたはそれを解決しましたか? – Coder12345

+0

regeditで最初にレジストリの64ビットビューを編集していたのだろうかと思います。キーをプログラムによって設定すると、プログラムがレジストリの32ビットビューを編集していたために、キーが機能しました。 – Wally

2

あなたはvshost

内で実行されていないアプリ名が異なるであろうことを保証すなわちappname.vshost.exe

0

私はあまりにも可能性FEATURE_BROWSER_EMULATIONが私のアプリケーションに何らかの変化をもたらしたとは見えません。

私はregeditでレジストリを手動で編集してFEATURE_BROWSER_EMULATION機能をテストしていました。私は何の違いもありませんでした。私のホストされたページはまだnew-ish JavaScriptで失敗していて、外部ライブラリを読み込めませんでした。

私は私のミスを見つけた:

私はregeditを持つレジストリの64ビットビューを編集しました。私のアプリは32ビットのアプリケーションとして動作していて、レジストリの32ビットビューを見ていました。そのため、私のレジストリへの変更がアプリケーションに影響を与えていないようです。ちなみに、WPFプロジェクトテンプレートのデフォルトは「32ビット優先」です。手動WOW6432NODEキー内regeditによる編集

が働いた:

HKEY_LOCAL_MACHINE \ SOFTWARE \ WOW6432NODE \マイクロソフト\ Internet Explorerの\ MAIN \ FeatureControlを\ FEATURE_BROWSER_EMULATION

をもちろん、あなたのアプリケーション内でプログラム的にDWORD値を設定しますあなたの32ビットアプリケーションがWow6432Node内で編集するため、動作します。

関連する問題