在浏览器可信应用程序Silverlight 5中

时间:2011-12-20 03:32:31

标签: silverlight elevated-privileges

使用新的Silverlight 5,我们现在可以拥有一个浏览器内升级信任应用程序。 但是,我在部署应用程序时遇到了一些问题。

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

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

  1. 签署了XAP - 我是按照Microsoft教程
  2. 做的
  3. 安装受信任的发布者证书存储区 - 我也是按照Microsoft教程
  4. 进行的
  5. 使用值AllowElevatedTrustAppsInBrowser添加注册表项。
  6. 第三步是我最不确定的一步。我们是否需要在本地计算机或服务器上添加此注册表项? Silverlight中是否有任何自动功能来添加此密钥,还是制作批处理文件更好?

    即使使用这三个步骤,当从另一个URL调用时,应用程序仍然无法正常工作。

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

    来源:

5 个答案:

答案 0 :(得分:12)

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

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

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

    • 如果您在测试时使用自签名证书,则还需要将其安装到“证书 - &gt;当前用户 - &gt;受信任的根证书颁发机构”中。 (在投入生产前购买)
    • 签署XAP文件后,您无法解压缩并修改它,因为这样做会破坏签名(必须重新签名)。
    • 如果要缓存xap文件,请不要忘记清除浏览器缓存。
    • 这适用于Windows 7和Windows 8 Release Preview(桌面模式),包括IE,Chrome,Firefox和Safari。

答案 1 :(得分:2)

我已成功创建了浏览器中的Silverlight 5应用,其中包含this msdn article的提升权限。 您可以随时检查您的应用是否具有提升的权限:

Application.Current.HasElevatedPermissions

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

修改

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

答案 2 :(得分:1)

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

demo available有一个XAMLGEEK;因为你布置的一切都应该让你处于工作状态。 Mike Taulty也有excellent walk through

答案 3 :(得分:0)

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

是否可以在不改变客户端的任何内容的情况下完成此操作?

答案 4 :(得分:0)

我也面临同样的问题

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

您必须使用其他证书对您的应用进行签名,它才能正常运行。

问题链接Silverlight 5 In browser trusted application