以下是我尝试在Windows桌面应用上工作的步骤。我需要编写FEATURE_BROWSER_EMULATION
。哪个适用于管理员用户,但对于无权在注册表中写入的标准用户则失败。
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
- &gt;中写出相同的内容。 App_Startup
- &gt;
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()
答案 0 :(得分:2)
如果用户没有权限写入某些注册表项 - 他不能这样做,无论您为应用程序指定requestedExecutionLevel
。当您指定类似requireAdministrator
之类的东西时,它只是意味着在启动时UAC提示将显示为运行具有管理员权限的应用程序,但如果用户不是管理员 - 那将无法帮助。
但是,在这种情况下,您不需要这样做,因为您可以在HKEY_LOCAL_MACHINE
部分注册表中写FEATURE_BROWSER_EMULATION
而不是写HKEY_CURRENT_USER
:
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION