在我走错了路径之前只是寻找一些指针。我已经编写了一个小型C#控制台应用程序,可以从我们的用户注册表中打开,读取,写入和删除HKEY_LOCAL_MACHINE和HKEY_CURRENT_USER下的文件从C#控制台应用程序调用时出现RegistryPermission错误
当然,我可以在我的PC和所有测试PC上运行,但我们的客户之一是得到一个错误,当他们尝试运行.exe
System.Security.SecurityException:请求类型System.Security.Permissions.RegistryPermission,mscorlib程序,版本= 2.0.0.0”的许可,文化=中性,PublicKeyToken = b77a5c561934e089'失败。
在System.Security.CodeAccessSecurityEngine.Check(对象的需求,StackCrawlMark & stackMark,布尔isPermSet) 在System.Security.CodeAccessPermission.Demand() 在Microsoft.Win32.RegistryKey.CheckSubKeyReadPermission(字符串subkeyName) 在Microsoft.Win32.RegistryKey.CheckOpenSubKeyPermission(字符串subkeyName,布尔> subKeyWritable) 在Microsoft.Win32.RegistryKey.OpenSubKey(字符串名称,布尔可写的) 在EstateMasterClearReg.Program.Main(字串[] args)
动作失败的是:
需求。 第一许可失败的类型是: System.Security.Permissions.RegistryPermission 大会的区失败是: 联网
正如我不能对此进行测试的客户端上机器(他们说,他们有本地运行的.exe,并以管理员身份登录)有什么我可以做的尝试,并确保该应用程序可以在任何机器上运行?
我是否需要使用强名称键和AllowPartiallyTrustedCallers,还是应该使用System.Security.Permissions.RegistryPermission?
感谢您的帮助。
顺便说一句,你可以通过“本地运行”来定义你或客户端的含义吗?你的意思是.EXE位于本地驱动器并从那里执行? – 2009-05-20 01:56:49
这是我的假设(这是他们通过电话告诉我的。)我更新了下面的评论,但基本上,我的意思是我告诉他们他们需要将它保存到他们的C驱动器并从那里运行它。 – Skittles 2009-05-20 03:33:55