我遇到一个VB.Net Winforms应用程序需要从整个网络播放WMV文件的情况。无法为运行该应用程序的用户直接访问网络共享。通过模拟,我可以看到文件存在(没有模拟,File.Exists对网络共享上的文件返回false)。然后,当我尝试将文件加载到Windows Media Player控件中时,该控件只是保持黑色。我推断出,当Windows Media Player控件加载到内存中时,它在与.Net托管线程不同的单独非托管线程上运行。有什么方法可以将安全 token 从托管线程传递到非托管线程?我完全想念什么吗?
最佳答案
您是否尝试过在SetThreadPrincipal
上使用 AppDomain
方法?
例子:IPrinicipal userPrincipal = new MyCustomPrincipal();
AppDomain currentDomain = AppDomain.CurrentDomain;
currentDomain.SetThreadPrincipal(userPrincipal);
您在问题中提到,WMV似乎是不受管理的,因此,前提是正确的,那么这实际上是行不通的(请参阅我的第二个答案)。