2017-04-14 10 views
3

以下は、Windowsデスクトップapp.Whereで作業をしようとした手順です。FEATURE_BROWSER_EMULATIONを書く必要があります。管理者ユーザーにとってはうまくいくが、レジストリに書き込む権限がない標準ユーザーにとってはうまくいかない。WPF C# - 標準(非特権)ユーザー用のアプリケーション起動時にレジストリを変更する

1)<requestedExecutionLevel level="highestAvailable" uiAccess="false" />は、インストール時にユーザーに権限があるように設定されています。

作成したスクリプトはインストール時に実行され、このスクリプトのためにアプリケーションのインストールに失敗します。

On Error Resume Next 
strComputer = "." 
Const HKEY_LOCAL_MACHINE = &H80000002 
Set objRegistry = GetObject("winmgmts:\\" & strComputer & "\root\default:StdRegProv") 

Sub strLocalMachinePath1 = "SOFTWARE\WOW6432Node\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION" 
objRegistry.OpenSubKey(HKEY_LOCAL_MACHINE, strLocalMachinePath1); 

If objRegistry.GetValue("MyApp.exe") Is Nothing Then 
    objRegistry.SetValue("MyApp.exe", 8000) 
End If 
If objRegistry.GetValue("MyApp.vshost.exe") Is Nothing Then 
    objRegistry.SetValue("MyApp.vshost.exe", 11000) 
End If 

End Sub 

2)私は、アプリを開いて、管理者パスワードを要求毎回<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />を試してみました。管理者ではない標準ユーザーの場合は失敗します。

3)私はApp.xml.csで同じことを書くしようとした - >App_Startup - >

key = Microsoft.Win32.Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Internet Explorer\Main", true); 
      key.CreateSubKey("FeatureControl"); 
      key = Microsoft.Win32.Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Internet Explorer\Main\FeatureControl", true); 
      key.CreateSubKey("FEATURE_BROWSER_EMULATION"); 
      key = Microsoft.Win32.Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION", true); 

しかし、違いはありませんし、ユーザーがへのアクセス権を持っていない場合No Internet connection

var client = new WebClientPool().GetIdleWebClientObject() 

答えて

2

のエラーを開始特定のレジストリエントリに書き込んでください - あなたのアプリケーションに指定したrequestedExecutionLevelが何であれ、彼はそれを行うことはできません。 requireAdministratorのようなものを指定すると、起動時にUACプロンプトが表示され、管理者権限でアプリケーションを実行するように表示されますが、ユーザーが管理者でない場合、それは役に立ちません。私はすでに、質問の第三の点を確認してくださいことを試してみました

HKEY_CURRENT_USER\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION 
+0

:代わりにHKEY_LOCAL_MACHINEへの書き込みは、レジストリのFEATURE_BROWSER_EMULATIONHKEY_CURRENT_USERで一部を書き込むことができますので、

ただし、この場合には、あなたは、それを必要としません。この場合、私はインターネットに接続することを許可しない、一度私はアプリを再起動します。この問題を回避するには? – Heena

+0

@Heenaここではインターネット接続はどのように関連していますか? – Evk

+0

私はなぜそれがわかりません。しかし、その後On_Startupでインターネットチェックコードを使用しました。 (var stream = client.OpenRead( "http://www.google.com")) '(var client = new WebClient GetIdleWebClientObject()) { を使用しています。 } } – Heena

関連する問題