Testing QueueUserWorkItem
Thread 2504 is impersonating V-CAMP-XP\alice
Testing Delegate.BeginInvoke
Thread 2516 is impersonating V-CAMP-XP\alice
Testing Native CreateThread
Thread 2520 is not impersonating!
哇!所以运行时现在的确是在线程间自动传播模拟标记的。如果想更改该行为,您可使用 SecurityContext 类(虽然我并不推荐这样做)。
注意,并未涉及由非托管 API CreateThread 创建的线程,但期望是这样,因为是运行时而不是操作系统来进行这项工作。这表明由于线程模型不匹配而对生成线程切换的进程内 COM 组件的调用将和以前一样仍会撤销模拟标记,但是对大多应用程序来说,跨线程的标识流动问题已经解决。这是很重要的消息,因为它将给大多数人带来不足为奇的结果。这个变化既重要又微妙,所以如果您正在应用程序中使用模拟和异步,就要为之做好准备。
返回页首
System.Security.Principal
虽然它看起来微不足道,但这个模拟安全标识符 (SID) 的新类为广泛支持 Windows 安全编程接口铺平了道路。我将花费少得多的时间来编写托管 C++,从而架起桥梁,这使我成为一名非常快乐的宿营者。有三个类可以使之成为可能。前两个类是表示两种方式的具体类,通过这两种方式您可以引用一个安全帐户(可以是用户、组或计算机):SecurityIdentifier 表示机器可读的 SID,而 NTAccount 存储人工可读的字符串。第三个类是称为 IdentityReference 的抽象类,它将这些类绑定在一起。
正常返回一个 SID、SID 集合,或者包含 SID 的数据结构集合的方法,将在其签名中使用该抽象类。该方法将接受另外的 Type 参数,允许您选择是否希望该方法返回 SID 或名称。然后您就可以安全地向下转换到正确的类型。下面的示例显示了拥有一个文件的用户的帐户名:
void printTheOwnerOfThisFile(string path) {
FileSecurity s = File.GetAccessControl(path);
文章来源于领测软件测试网 https://www.ltesting.net/