我正在使用.NET 3.5。假设我有一个访问特定文件和特定注册表项的方法。我想添加限制该方法的声明性安全定义,以便它只能访问指定的文件和注册表项,而不能访问其他任何内容。
当我尝试:
[RegistryPermission(SecurityAction.PermitOnly, Read = "registry key path"]
[FileIOPermission(SecurityAction.PermitOnly, Read = "file path")]
...它让我读取文件路径,但不是注册表项 - 我得到一个安全异常。
如果我使用:
[RegistryPermission(SecurityAction.Demand, Read = "registry key path"]
[FileIOPermission(SecurityAction.Demand, Read = "file path")]
...它可以让我读取文件和注册表项,还可以让我访问其他文件。
我是否遗漏了一些关于如何使用这些方法来实现这种效果的信息?
编辑:
我用来访问注册表项的代码是:
RegistryKey rk = Registry.LocalMachine;
rk = rk.OpenSubKey("MyKey");
string registryVal = rk.GetValue("Test").ToString();
因此许可声明是:
[RegistryPermission(SecurityAction.PermitOnly, Read = @"HKEY_LOCAL_MACHINE\MyKey")]
谢谢。