我添加了带有元素
的Manifest文件<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
我构建了项目,当非管理员运行它时,它会一直崩溃。
未处理的异常:System.Security.SecurityException:Request for 类型的许可 'System.Security.Permissions.RegistryPermission,mscorlib,Version = 2。 0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089'失败。在System.Security.CodeAccessSecurityEngine.Check(对象需求, StackCrawlMa rk&amp; stackMark,Boolean isPermSet)at System.Security.CodeAccessPermission.Demand()at Microsoft.Win32.RegistryKey.CheckSubKeyReadPermission(字符串 subkeyName)at Microsoft.Win32.RegistryKey.CheckOpenSubKeyPermission(字符串 subkeyName,B oolean subKeyWritable)at Microsoft.Win32.RegistryKey.OpenSubKey(String name,Boolean writable) 在 LotusTrustedSites.RegistryKeyExtensionMethods.GetOrCreateSubKey(RegistryKe y registryKey,String parentKeyLocation,String key,Boolean writable) 在LotusTrustedSites.ReportDownloader.Main(String [] args)动作 失败的是:Demand失败的第一个权限的类型 是:System.Security.Permissions.RegistryPermission
失败的程序集或AppDomain是:MyApp,Version = 1.0.0.0, Culture = neutral,PublicKeyToken = null导致该方法的方法 失败的是:Microsoft.Win32.RegistryKey GetOrCreateSubKey(Microsoft.Win32.RegistryKey,Syste m.String, System.String,Boolean)
答案 0 :(得分:5)
当然失败了。您告诉它要求管理员访问权限,而非管理员帐户无法提供该权限。您是否期望它以非管理员用户的管理员权限运行?如果可能的话,那将是Windows中的一个主要安全漏洞。
如果您需要以非管理员可访问的管理员身份运行应用程序,我知道这样做的唯一方法是将应用程序安装为计划任务,并将任务设置为使用管理员帐户运行。非管理员应该仍然能够看到并运行此任务,它将使用提供的管理员凭据。
答案 1 :(得分:0)
您指定了requireAdministrator
,但您没有以管理员身份运行它。您应该将其更改为asInvoker
,或者您应该以管理员身份运行它。
答案 2 :(得分:0)
据我所见,您正在尝试获取一些注册表权限。这就是它需要管理权限的原因。
尝试重新访问(或发布)处理注册表访问的代码,并尝试找出导致问题的原因