9

使用新的 Silverlight 5,我们现在可以拥有一个 In-Browser 提升信任应用程序。但是,我在部署应用程序时遇到了一些问题。

当我从 Visual Studio 测试应用程序时,一切正常,因为如果网站托管在本地计算机(localhost,127.0.0.1)上,它会自动赋予所有权利。

我在 MSDN 上看到我必须遵循 3 个步骤才能使其在任何网站上运行:

  1. 签署了 XAP——我是按照微软教程做的
  2. 安装受信任的发布者证书存储 - 我也按照 Microsoft 教程进行了安装
  3. 添加具有值的注册表项AllowElevatedTrustAppsInBrowser

第三步是我最不确定的一步。我们需要在本地机器上还是在服务器上添加这个注册表项?Silverlight 中是否有自动添加此密钥的功能,还是制作批处理文件更好?

即使有了这三个步骤,当从 localhost 之外的另一个 url 调用时,应用程序仍然无法工作。

是否有人成功实现了浏览器内提升信任的应用程序?你看到我做错了吗?

资料来源:

4

5 回答 5

12

有很多很好的资源描述了这个过程,包括这里的回复中提到的那些。我想记录对我们有用的步骤。(银光 5.1.10411.0)

以下是我们为启用浏览器内受信任的应用程序所采取的步骤:

  1. 使用代码签名密钥对 Xap 文件进行签名。
  2. 将公共代码签名密钥安装到“证书->当前用户->受信任的发布者”中
  3. 将 DWORD 注册表项 AllowElevatedTrustAppsInBrowser = 1 设置为
    SL 64 位路径:HKLM\Software\Wow6432Node\Microsoft\Silverlight
    SL 32 位路径:HKLM\Software\Microsoft\Silverlight
  4. 在文本编辑器中打开 Silverlight 项目并验证是否存在以下条目:
    <RequireInBrowserElevation>true</RequireInBrowserElevation>
    <InBrowserSettingsFile>Properties\InBrowserSettings.xml</InBrowserSettingsFile>
    
  5. 检查 Properties\InBrowserSettings.xml 是否存在并包含:
    <InBrowserSettings>
      <InBrowserSettings.SecuritySettings>
        <SecuritySettings ElevatedPermissions="Required" />
      </InBrowserSettings.SecuritySettings>
    </InBrowserSettings>
    

笔记:

  • 如果您在测试时使用自签名证书,您还需要将其安装到“证书->当前用户->受信任的根证书颁发机构”中。(在生产前购买一个)
  • 签署 XAP 文件后,您将无法解压缩和修改它,因为这样做会破坏签名(必须重新签名)。
  • 如果您正在缓存 xap 文件,请不要忘记清除浏览器缓存。
  • 这适用于带有 IE、Chrome、Firefox 和 Safari 的 Windows 7 和 Windows 8 Release Preview(桌面模式)。
于 2012-06-12T06:03:58.557 回答
2

在这篇 msdn 文章之后,我已经成功创建了具有提升权限的浏览器内 Silverlight 5 应用程序。您可以随时检查您的应用是否具有提升的权限:

Application.Current.HasElevatedPermissions

我的问题是,虽然它在 Firefox 14 中运行没有问题,但 IE9 需要在 Windows 7 中以管理员身份运行。我目前正在寻找一种方法让它在不以管理员身份执行 IE 的情况下运行。如果有人知道如何做到这一点,我将不胜感激。

编辑:

哇。实际上,来自 Aaron McIver 帖子的链接对我帮助很大。我刚刚关闭了“启用保护模式”,现在它可以在没有管理员权限的情况下正常工作。:D

于 2012-07-25T06:09:29.020 回答
1

注册表编辑需要在客户端机器上;执行 Silverlight 应用程序的机器。

可以通过XAMLGEEK获得演示;因为您布置的所有内容都应该使您处于工作状态。Mike Taulty 也有出色的演练。

于 2011-12-20T03:37:23.477 回答
0

我想将 silverlight 应用程序连接到托管应用程序的同一主机地址上的端口 10001 上的套接字。

是否可以在不更改客户端任何内容的情况下做到这一点?

于 2013-01-02T09:50:11.223 回答
0

我也面临同样的问题

当我们使用仅适用于本地机器的测试证书时。

你必须用另一个证书签署你的应用程序,它才能工作。

问题链接Silverlight 5 在浏览器受信任的应用程序中

于 2013-09-12T08:58:52.497 回答