<trustInfo> 元素(ClickOnce 应用程序)

描述应用程序在客户端计算机上运行至少所需的安全权限。

<trustInfo>
   <security>
      <applicationRequestMinimum>
         <PermissionSet
            ID
            Unrestricted>
            <IPermission
               class
               version
               Unrestricted
            />
         </PermissionSet>
         <defaultAssemblyRequest
            permissionSetReference
         />
         <assemblyRequest
            name
            permissionSetReference
         />
      </applicationRequestMinimum>
      <requestedPrivileges>
         <requestedExecutionLevel
            level
            uiAccess
         />
      </requestedPrivileges>
   </security>
</trustInfo>

元素和特性

trustInfo 元素是必需的,它位于 asm.v2 命名空间中。 该元素没有特性,但包含下列元素。

安全性

必选。 此元素是 trustInfo 元素的子元素。 它包含 applicationRequestMinimum 元素,但没有特性。

applicationRequestMinimum

必选。 此元素是 security 元素的子元素,它包含 PermissionSet、assemblyRequest 和 defaultAssemblyRequest 元素。 此元素没有特性。

PermissionSet

必选。 此元素是 applicationRequestMinimum 元素的子元素,它包含 IPermission 元素。 此元素具有下列特性。

特性

说明

ID

必选。 标识权限集。 此特性可以是任意值。 defaultAssemblyRequest 和 assemblyRequest 特性引用此 ID。

version

必选。 标识权限的版本。 通常,该值为 1。

IPermission

可选。 此元素是 PermissionSet 元素的子元素。 IPermission 元素完全标识 .NET Framework 中的权限类。 IPermission 元素不但具有下列特性,而且还可以具有与权限类的属性对应的其他特性。 若要查找特定权限的语法,请参见 Security.config 文件中列出的示例。

特性

说明

class

必选。 使用强名称标识权限类。 例如,下面的代码标识 FileDialogPermission 类型。

System.Security.Permissions.FileDialogPermission, mscorlib, Version=1.2.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089

version

必选。 标识权限的版本。 通常,该值为 1。

Unrestricted

必选。 标识应用程序是否需要被无限制地授予此权限。 如果设置为 true,则权限授予将是无条件的。 如果设置为 false,或者未定义此特性,将会根据 IPermission 标记中定义的权限特定特性对权限授予进行限制。 以下面的权限为例:

<IPermission
  class="System.Security.Permissions.EnvironmentPermission, mscorlib, Version=1.2.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" 
  version="1" 
  Read="USERNAME" />
<IPermission
  class="System.Security.Permissions.FileDialogPermission, mscorlib, Version=1.2.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" 
  version="1" 
  Unrestricted="true" />

在本示例中,EnvironmentPermission 的声明限制应用程序只能读取环境变量 USERNAME,而 FileDialogPermission 的声明使应用程序可以无限制地使用所有的 FileDialog 类。

defaultAssemblyRequest   

可选。 标识授予所有程序集的权限集。 此元素是 applicationRequestMinimum 元素的子元素,它具有下列特性。

特性

说明

permissionSetReference

必选。 标识属于默认权限的权限集的 ID。 权限集在 PermissionSet 元素中声明。

assemblyRequest   

可选。 标识特定程序集的权限。 此元素是 applicationRequestMinimum 元素的子元素,它具有下列特性。

特性

说明

Name

必选。 标识程序集名称。

permissionSetReference

必选。 标识此程序集所需的权限集的 ID。 权限集在 PermissionSet 元素中声明。

requestedPrivileges

可选。 此元素是 security 元素的子元素,它包含 requestedExecutionLevel 元素。 此元素没有特性。

requestedExecutionLevel

可选。 标识将要执行应用程序请求的安全级别。 此元素不包含子元素,并具有下列特性。

特性

说明

Level

必选。 指示应用程序正在请求的安全级别。 可能的值包括:

asInvoker,不请求任何附加权限。 此级别不需要任何额外的信任提示。

highestAvailable,请求可用于父进程的最高权限。

requireAdministrator,请求完全管理员权限

ClickOnce 应用程序将只能使用 asInvoker 值安装。 使用任何其他值安装将会失败。

uiAccess

可选。 指示应用程序是否需要对受保护用户界面元素的访问权限。 值为 true 或 false,默认值为 false。 只有经过签名的应用程序才应具有 true 值。

备注

如果 ClickOnce 应用程序要求的权限超过客户端计算机默认情况下授予的权限,公共语言运行时的信任关系管理器将会询问用户,是否授予该应用程序这种提升的信任级别。 如果回答否,将不会运行该应用程序;否则,将使用请求的权限运行该应用程序。

如果部署清单具有有效的信任许可证,将在不出现用户提示的情况下,授予使用 defaultAssemblyRequest 和 assemblyRequest 请求的所有权限。

有关权限提升的更多信息,请参见 保护 ClickOnce 应用程序。 有关策略部署的更多信息,请参见 受信任的应用程序部署概述

示例

下面的三个代码示例阐释默认命名安全区域(Internet、LocalIntranet 和 FullTrust)的 trustInfo 元素,这些元素在 ClickOnce 部署的应用程序清单中使用。

第一个示例阐释 Internet 安全区域中可用的默认权限的 trustInfo 元素。

<trustInfo>
    <security>
      <applicationRequestMinimum>
        <PermissionSet ID="Internet">
          <IPermission
            class="System.Security.Permissions.FileDialogPermission, mscorlib, Version=1.2.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
            version="1" 
            Access="Open" />
          <IPermission
           class="System.Security.Permissions.IsolatedStorageFilePermission, mscorlib, Version=1.2.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" 
            version="1"
            Allowed="DomainIsolationByUser"
            UserQuota="10240" />
          <IPermission
            class="System.Security.Permissions.SecurityPermission, mscorlib, Version=1.2.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
            version="1" 
            Flags="Execution" />
          <IPermission 
            class="System.Security.Permissions.UIPermission, mscorlib, Version=1.2.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" 
            version="1" 
            Window="SafeTopLevelWindows"
            Clipboard="OwnClipboard" />
          <IPermission
            class="System.Drawing.Printing.PrintingPermission, System.Drawing, Version=1.2.3300.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
            version="1" 
            Level="SafePrinting" />
        </PermissionSet>
        <defaultAssemblyRequest permissionSetReference="Internet" />
      </applicationRequestMinimum>
    </security>
  </trustInfo>

第二个示例阐释 LocalIntranet 安全区域中可用的默认权限的 trustInfo 元素。

<trustInfo>
    <security>
      <applicationRequestMinimum>
        <PermissionSet ID="LocalIntranet">
          <IPermission
            class="System.Security.Permissions.EnvironmentPermission, mscorlib, Version=1.2.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" 
            version="1" 
            Read="USERNAME" />
          <IPermission
            class="System.Security.Permissions.FileDialogPermission, mscorlib, Version=1.2.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" 
            version="1" 
            Unrestricted="true" />
          <IPermission
            class="System.Security.Permissions.IsolatedStorageFilePermission, mscorlib, Version=1.2.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" 
            version="1" 
            Allowed="AssemblyIsolationByUser"
            UserQuota="9223372036854775807"
            Expiry="9223372036854775807"
            Permanent="True" />
          <IPermission
            class="System.Security.Permissions.ReflectionPermission, mscorlib, Version=1.2.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" 
            version="1" 
            Flags="ReflectionEmit" />
          <IPermission
            class="System.Security.Permissions.SecurityPermission, mscorlib, Version=1.2.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" 
            version="1" 
            Flags="Assertion, Execution" />
          <IPermission 
            class="System.Security.Permissions.UIPermission, mscorlib, Version=1.2.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
            version="1" 
            Unrestricted="true" />
          <IPermission
            class="System.Net.DnsPermission, System, Version=1.2.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
            version="1" 
            Unrestricted="true" />
          <IPermission
            class="System.Drawing.Printing.PrintingPermission, System.Drawing, Version=1.2.3300.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
            version="1"
            Level="DefaultPrinting" />
          <IPermission
            class="System.Diagnostics.EventLogPermission, System, Version=1.2.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
            version="1" />
        </PermissionSet>
        <defaultAssemblyRequest permissionSetReference="LocalIntranet" />
      </applicationRequestMinimum>
    </security>
</trustInfo>

第三个示例阐释 FullTrust 安全区域中可用的默认权限的 trustInfo 元素。

<trustInfo>
  <security>
    <applicationRequestMinimum>
      <PermissionSet ID="FullTrust" Unrestricted="true" />
      <defaultAssemblyRequest permissionSetReference="FullTrust" />
    </applicationRequestMinimum>
  </security>
</trustInfo>

请参见

参考

ClickOnce 应用程序清单

概念

受信任的应用程序部署概述