Silverlight调用本地DLL文件的问题。或者说是能不能给本地的DLL文件的方法设置为关键方法。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Silverlight调用本地DLL文件的问题。或者说是能不能给本地的DLL文件的方法设置为关键方法。相关的知识,希望对你有一定的参考价值。
由于安全原因,Silverlight不能调用本地的DLL文件。调试的错误是方法必须是安全关键或者是安全可靠关键。那应该如何提高我本地方法的安全级别呢。如何才能让Silverlight像执行浏览器插件一样使用本地方法(除了ActiveX)。或者能不能把我们写的DLL文件注册为Silverlight的SDK提供的DLL,使得我们的DLL文件被认为是安全的,以便可以被调用执行。
纠结呀,希望高人指点,共同提高。
我说的不是SL的SDK ,而是自己写的其他DLL文件,怎么样在SL中调用但是又能满足安全检查
参考技术B 添加引用~~~从网页写入本地磁盘
【中文标题】从网页写入本地磁盘【英文标题】:Write to local disk from web page 【发布时间】:2009-01-05 16:49:45 【问题描述】:我正在开发一个允许多文件下载的 Silverlight 控件。目前,我正在努力思考浏览器的权限模型。
假设在网页上,用户在文本框中输入本地文件夹 (c:\temp)。然后用户点击一个按钮。
是否可以在 JavaScript 或 Silverlight 中将一组文件(存储在服务器上)写入用户驱动器上的该文件夹?
【问题讨论】:
【参考方案1】:来自 Javascript - 没有。如果可能的话,一些人渣在你的电脑上安装病毒太容易了。
Silverlight 我不知道,但我认为写入用户硬盘驱动器会非常有限且受到严格控制。
【讨论】:
这是不正确的。您可以使用 MSIE 中的 ActiveX 或 Firefox 中的类似调用来执行此操作。在这两种情况下,用户都需要“确定”一个对话框,警告浏览器正在请求危险的权限。 澄清一下,您可以在 MSIE 和 Firefox 的 Javascript 中直接调用文件 io。有人已经在此处发布了 MSIE 的链接。对于 Friefox,我没有关于我的详细信息,但它可能与使用 XUL 相同。请参阅此 XUL 示例:captain.at/programming/xul 此时(除了下面有正确答案的事实之外)文件 io 正在直接构建到 HTML5 中,但我们仍然有错误的答案,投票数是其他答案的两倍。哦人类ಠ_ಠ 可以使用File System Access API覆盖本地文件,但只能修改用户选择的文件。【参考方案2】:仅当浏览器存在您可以利用的安全漏洞时。
由于您描述的功能将允许任何网页为访问者的系统做任何该死的事情,因此在当今时代,任何人都不会故意对本地磁盘进行任意访问。
您可以做的下一个最好的事情是让用户下载一个 ZIP 存档并告诉他在任何他喜欢的地方解压缩。
【讨论】:
【参考方案3】:您不能来自 Silverlight。您唯一可以访问的是独立存储。
http://blog.paranoidferret.com/index.php/2007/10/12/silverlight-tutorial-using-isolated-storage/
http://msdn.microsoft.com/en-us/library/bdts8hk0.aspx
【讨论】:
【参考方案4】:警告:这些答案大多不正确。
您可以在 MSIE(使用 ActiveX FileSystemObject)和 Firefox(使用 nsIFileOutputStream)中通过 Javascript 写入文件。在这两种情况下,用户都会看到一个安全对话,可以允许或拒绝读取或写入。
【讨论】:
【参考方案5】:我已使用 Scripting.FileSystemObject 来执行此操作。只能在 IE 中使用,并且只能在非常宽松和不安全的安全设置下使用,但它可能适用于企业的 Intranet 站点,至少它对我有用。
【讨论】:
【参考方案6】:Google Gears 有一种方法来进行客户端存储。
http://gears.google.com/
也就是说,我怀疑它会做你正在尝试的事情。我认为您最好让服务器端的东西下载文件并将它们放入客户端的 .zip 文件中,然后再将其传递给它们。
【讨论】:
【参考方案7】:正如之前回答的那样,这必须通过服务器端完成,Silverlight 和 JavaScript 被沙盒化以禁用这种类型的安全漏洞。我建议将文件打包到服务器上的 zip 存档中,然后下载 zip 存档。
【讨论】:
【参考方案8】:您可以通过 ActiveX 控件或 Java 小程序执行此操作。无论采用哪种方式,项目都必须使用代码签名证书进行签名。您可以使用自签名证书,但警告对话框会更响亮。
然后您可以使用 Javascript 调用已签名的控件并保存文件。在创建这样的小程序时要非常小心。您不想让任何其他网站使用此控件,因此该控件必须实现以下某些功能:
-
仅适用于特定网站。
仅将文件保存在特定位置。
提示用户保存文件的位置,以便他们知道正在发生这种情况,并且不会在后台静默发生。
您可能会在某个地方找到可以用 Javascript 控制的控件或小程序。
【讨论】:
【参考方案9】:我不相信这是可能的,因为它会产生无数的安全问题。我认为这是安全的唯一方法是混合用户权限和某种方式(在客户端)验证网站的真实性以及他们想要下载到我的计算机的文件。
您可以做的一种方法是触发“FileSaveDialog”,但我认为这不是您想要的。也许先打包文件集合然后触发是实现目标的方法。 Silverlight 仅允许每个域 1mb 的隔离存储,并且绝对不会让网站访问客户端硬盘。
【讨论】:
【参考方案10】:这并不能直接回答问题,但 Adobe Flex 4 允许使用 FileReference 类进行此操作。
【讨论】:
【参考方案11】:Silverlight 4 OOB 允许访问用户的文档目录。
【讨论】:
以上是关于Silverlight调用本地DLL文件的问题。或者说是能不能给本地的DLL文件的方法设置为关键方法。的主要内容,如果未能解决你的问题,请参考以下文章
ArcGIS API for Silverlight动态标绘的实现