<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 标记中定义的权限特定特性对权限授予进行限制。 以下面的权限为例:
在本示例中,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>