.Net控制台应用程序不断崩溃

时间:2011-05-19 13:41:37

标签: c# visual-studio-2008 visual-studio-2010 security manifest

我添加了带有元素

的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)

3 个答案:

答案 0 :(得分:5)

当然失败了。您告诉它要求管理员访问权限,而非管理员帐户无法提供该权限。您是否期望它以非管理员用户的管理员权限运行?如果可能的话,那将是Windows中的一个主要安全漏洞。

如果您需要以非管理员可访问的管理员身份运行应用程序,我知道这样做的唯一方法是将应用程序安装为计划任务,并将任务设置为使用管理员帐户运行。非管理员应该仍然能够看到并运行此任务,它将使用提供的管理员凭据。

答案 1 :(得分:0)

您指定了requireAdministrator,但您没有以管理员身份运行它。您应该将其更改为asInvoker,或者您应该以管理员身份运行它。

答案 2 :(得分:0)

据我所见,您正在尝试获取一些注册表权限。这就是它需要管理权限的原因。

尝试重新访问(或发布)处理注册表访问的代码,并尝试找出导致问题的原因