在 this thread from a year ago 中解释说,当 WriteableBitmap 的任何部分来自外部域时,this question here 将阻止读取访问 - 例如免费图像服务器。
进一步详细说明这是针对“DRM”的。我猜有人在 Silverlight 中编写电影开膛手,其中包括来自另一个域的电影,然后重新捕获它,这是一个很大的威胁......除了意识到你可以在它掉下来时重写血腥的 xap 然后这是同域!但这既不在这里也不在那里。
无论如何,显然我正在尝试使用 WritableBitmap 来导出用户当前设置的屏幕截图;但我被这个跨域问题阻止了。
在最新版本的 Silverlight 中真的没有支持的方法吗?没有crossdomain.xml 或clientaccesspolicy.xml?这对 Silverlight 来说是不是很严重——一个巨大的“螺丝钉”,在阻碍开发人员但不阻止攻击者的情况下设置了半心半意的安全障碍?
编辑 :这个问题与 ojit_a 相同。
最佳答案
许多开发人员出于合法目的试图这样做,您的观点是相同的。有一些变通方法,所有这些要么是hacky要么是奇怪的。但这可能是我见过的最好的一个: Screen Capture in SIlverlight 4.0 。
再次阅读并发现您不是在寻找 crossdomain.xml 解决方案。此页面还有一些其他选项(同样,没有“很棒”的解决方案):http://betaforums.silverlight.net/forums/t/118030.aspx
此外,不确定这是否是一个选项,但您的应用程序作为 OOB 应用程序将不会仅限于 ClientAccessPolicy.xml 或 CrossDomain.xml 中的安全检查。浏览器外是否适合您?
编辑:
在进一步查看帖子和评论后,我相信(Tom,请确认这一点)不需要获取在他们自己的机器上运行的 SL 应用程序的用户实例的屏幕截图(类似 Customer Support in Silverlight 的东西会处理挺好的)。
相反,它是为用户的屏幕拍照(与 PrtSc-ish 相同)。在这种情况下,这要困难得多,但并非不可能。 Rui 展示了他是如何做到的 here ,但它依赖于已经在用户机器上的组件。 Jeremy get 的 Silverlight 4 Hack: Use Native/Desktop CLR Without COM Registration 更有创意,这将有效地允许访问。
关于silverlight - Silverlight 4 的 WriteableBitmap *真的*以 DRM 的名义削弱了合法的跨域访问吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3346369/