为什么在 localhost (127.0.0.1) 中运行的 CAS 演示代码无法识别安全区域?
-
18-09-2019 - |
题
我正在运行 MCTS 70-536 培训套件第 11 章中有关代码访问安全性的实验。我运行的是 XP Pro。第一个实验创建一个程序集,用于检查不同的权限并报告消息(如果存在)。但是当我运行它时 \\\127.0.0.1\c$\ListPermissions.exe
它应该识别出处于 Intranet 区域并使用 Intranet 权限集。然而,所有权限似乎都已授予。这种行为听起来很熟悉吗?如果没有,有没有办法检查程序集在从共享运行时认为它位于哪个区域?如果这个问题的某个特定部分太模糊,请告诉我,我会尝试重新表述。
解决方案
我有我试过别的东西同样问题。然而。代替像从共享文件夹或从C驱动器的根从不同位置执行该程序的,我已创建的应用程序域和从与各个区域设置我的应用程序域执行的代码。这是我的代码:
object[] hostEvidence = { new Zone(SecurityZone.Internet) };
Evidence appDomainEvidence = new Evidence(hostEvidence, null);
AppDomain d = AppDomain.CreateDomain("MyDomain", appDomainEvidence);
d.ExecuteAssembly("ListPermissions.exe");
在我区设置为我的电脑的ListPermissions执行没有给予任何exeption和每一个许可返回true。然而,当我把我区Internet或Intranet的ExecuteAssembly行开始给这实际上使我很高兴产生的异常。至少在某些时候它的工作原理。
从我的理解说什么书,当你从不同的位置运行应用程序的CLR看到的是正在运行的代码具有不同的证据和assings大会像MYCOMPUTER或互联网不同的代码组。但是至少在我的配置是不一样的是,和其他论坛得出的结论是与.NET Framework 3.5的共享文件夹中运行的组件没有从互联网区域中运行的组件的确切证据。 http://social.msdn.microsoft .COM /论坛/ EN / CLR /线程/ 5f5f0925-64fc-4fc8-9be3-d077d27d2554 其实我不知道确切的sollution这使得程序执行,因为它在这本书一样。只是想用创建的自定义应用程序域代码工作,因为它是应该做的分享。
希望这有助于
由于
其他提示
.net 平台似乎发生了变化。启动托管 exe 时添加了一条新证据。当直接从 win32 CreateProcess API 启动 exe 时,托管 exe 将获得完全信任。
当然,.net 配置工具不会启动该 exe,而只是检查它。这意味着证据不同并影响分配给它的代码组。这反过来又会影响权限。
这非常令人困惑。更令人困惑的是你在考试中应该给出的答案。我想答案会像书中那样。我不认为这种变化已经渗透到考试内容团队。
更多信息可以在这里找到:
您好我不知道,如果你发现了运行这个例子,但使用评估大会在.NET Framework 2.0配置工具,我可以看到,该程序集应该在Internet_Zone和Internet_Same_Site_Access码组运行时会发生什么。这些代码组授予由5个授权组成的子集: - UI - 隔离储量 - 保护 - IO对话框 - 打印
看来在配置工具确定...但组装行为是完全不同的......不知道:(
马