Elemento <trustInfo> (aplicativo ClickOnce)
Descreve as permissões de segurança mínimas necessárias para que o aplicativo seja executado no computador cliente.
Sintaxe
<trustInfo>
<security>
<applicationRequestMinimum>
<PermissionSet
ID
Unrestricted>
<IPermission
class
version
Unrestricted
/>
</PermissionSet>
<defaultAssemblyRequest
permissionSetReference
/>
<assemblyRequest
name
permissionSetReference
/>
</applicationRequestMinimum>
<requestedPrivileges>
<requestedExecutionLevel
level
uiAccess
/>
</requestedPrivileges>
</security>
</trustInfo>
Elementos e atributos
O elemento trustInfo
é necessário e está no namespace asm.v2
. Ele não tem atributos e contém os elementos a seguir.
segurança
Obrigatórios. Este elemento é um elemento filho do elemento trustInfo
. Ele contém o elemento applicationRequestMinimum
e não tem atributos.
applicationRequestMinimum
Obrigatórios. Esse elemento é filho do security
elemento e contém os PermissionSet
elementos , assemblyRequest
, e .defaultAssemblyRequest
Esse elemento não tem atributos.
PermissionSet
Obrigatórios. Esse elemento é um filho do elemento applicationRequestMinimum
e contém o elemento IPermission
. Esse elemento tem os atributos a seguir.
ID
Obrigatórios. Identifica o conjunto de permissões. Esse atributo pode ser qualquer valor. A ID é referenciada nos atributos
defaultAssemblyRequest
eassemblyRequest
.version
Obrigatórios. Identifica a versão da permissão. Normalmente, esse valor é
1
.
IPermission
Opcional. Este elemento é um elemento filho do elemento PermissionSet
. O elemento IPermission
identifica totalmente uma classe de permissão no .NET Framework. O elemento IPermission
tem os atributos a seguir, mas pode ter atributos adicionais que correspondem às propriedades na classe de permissão. Para descobrir a sintaxe de uma permissão específica, consulte os exemplos listados no arquivo Security.config.
class
Obrigatórios. Identifica a classe de permissão por nome forte. Por exemplo, o código a seguir identifica o tipo
FileDialogPermission
.System.Security.Permissions.FileDialogPermission, mscorlib, Version=1.2.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
version
Obrigatórios. Identifica a versão da permissão. Normalmente, esse valor é
1
.Unrestricted
Obrigatórios. Identifica se o aplicativo precisa de uma concessão irrestrita dessa permissão. Se
true
, a concessão de permissão será incondicional. Sefalse
, ou se esse atributo for indefinido, ele será restrito de acordo com os atributos específicos de permissão definidos na marcaIPermission
. Habilite as seguintes permissões:<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" />
Neste exemplo, a declaração para EnvironmentPermission restringe o aplicativo a ler apenas a variável de ambiente USERNAME, enquanto a declaração para FileDialogPermission fornece ao aplicativo o uso irrestrito de todas as classes FileDialog.
defaultAssemblyRequest
Opcional. Identifica o conjunto de permissões concedidas a todos os assemblies. Esse elemento é um filho do elemento applicationRequestMinimum
e não tem os seguintes atributos.
permissionSetReference
Obrigatórios. Identifica a ID do conjunto de permissões que é a permissão padrão. O conjunto de permissões é declarado no elemento
PermissionSet
.
assemblyRequest
Opcional. Identifica permissões para um assembly específico. Esse elemento é um filho do elemento applicationRequestMinimum
e não tem o seguinte atributo.
Name
Obrigatórios. Identifica o nome do assembly.
permissionSetReference
Obrigatórios. Identifica a ID do conjunto de permissões exigido por esse assembly. O conjunto de permissões é declarado no elemento
PermissionSet
.
requestedPrivileges
Opcional. Esse elemento é um filho do elemento security
e contém o elemento requestedExecutionLevel
. Esse elemento não tem atributos.
requestedExecutionLevel
Opcional. Identifica o nível de segurança no qual o aplicativo solicita a execução. Ele não tem elementos filho e tem os atributos a seguir.
Level
Obrigatórios. Indica o nível de segurança que o aplicativo está solicitando. Os valores possíveis são:
asInvoker
, solicitando nenhuma permissão adicional. Esse nível não requer nenhum prompt de confiança adicional.highestAvailable
, solicitando as permissões mais altas disponíveis para o processo pai.requireAdministrator
, solicitando permissões completas do administrador.Os aplicativos ClickOnce só serão instalados com um valor de
asInvoker
. A instalação falhará com qualquer outro valor.uiAccess
Opcional. Indica se o aplicativo requer acesso a elementos de interface do usuário protegidos. Os valores são
true
oufalse
, e o padrão é false. Somente aplicativos assinados devem ter um valor igual a true.
Comentários
Se um aplicativo ClickOnce solicitar mais permissões do que o computador cliente concederá por padrão, o Gerenciador de Confiança do Common Language Runtime perguntará ao usuário se ela deseja conceder ao aplicativo esse nível elevado de confiança. Se ela disser não, o aplicativo não será executado; caso contrário, ele será executado com as permissões solicitadas.
Todas as permissões solicitadas usando defaultAssemblyRequest
e assemblyRequest
serão concedidas sem que o usuário solicite se o manifesto de implantação tiver uma Licença de Confiança válida.
Para saber mais sobre a Elevação de Permissões, consulte Proteção de Aplicativos ClickOnce. Para obter mais informações sobre a implantação política, consulte Visão geral da implantação de Aplicativos Confiáveis.
Exemplos
Os três exemplos de código a seguir ilustram trustInfo
elementos para as zonas de segurança nomeadas padrão – Internet, LocalIntranet e FullTrust – para uso no manifesto do aplicativo de uma implantação do ClickOnce.
O primeiro exemplo ilustra o elemento trustInfo
para as permissões padrão disponíveis na zona de segurança da Internet.
<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>
O segundo exemplo ilustra o elemento trustInfo
para as permissões padrão disponíveis na zona de segurança de LocalIntranet.
<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>
O terceiro exemplo ilustra o elemento trustInfo
para as permissões padrão disponíveis na zona de segurança FullTrust.
<trustInfo>
<security>
<applicationRequestMinimum>
<PermissionSet ID="FullTrust" Unrestricted="true" />
<defaultAssemblyRequest permissionSetReference="FullTrust" />
</applicationRequestMinimum>
</security>
</trustInfo>