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

Phi*_*ppe 8 silverlight elevated-privileges

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

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

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

  1. 签署了XAP - 我是按照Microsoft教程完成的
  2. 安装受信任的发布者证书存储区 - 我也是按照Microsoft教程执行的
  3. 使用值添加注册表项AllowElevatedTrustAppsInBrowser.

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

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

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

资料来源:

Far*_*res 12

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

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

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

注意:

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