<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 名前空間にあります。属性はなく、次の要素が含まれます。
security
必ず指定します。この要素は trustInfo 要素の子です。applicationRequestMinimum 要素を持ちます。属性はありません。
applicationRequestMinimum
必ず指定します。この要素は security 要素の子であり、PermissionSet 要素、assemblyRequest 要素、および defaultAssemblyRequest 要素を持ちます。この要素に属性はありません。
PermissionSet
必ず指定します。この要素は applicationRequestMinimum 要素の子であり、IPermission 要素が含まれています。この要素には、次の属性があります。
属性 |
Description |
---|---|
ID |
必ず指定します。アクセス許可セットを指定します。この属性には任意の値を指定できます。ID は、defaultAssemblyRequest 属性および assemblyRequest 属性で参照されます。 |
version |
必ず指定します。アクセス許可のバージョンを識別します。通常、この値は 1 です。 |
IPermission
省略可能です。この要素は PermissionSet 要素の子です。IPermission 要素には、.NET Framework 内のアクセス許可クラスを正しく指定します。IPermission 要素には、次の属性がありますが、アクセス許可クラスのプロパティに対応する追加の属性を持つことができます。アクセス許可の具体的な構文については、Security.config ファイル内の例を参照してください。
属性 |
Description |
---|---|
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 要素の子であり、以下の属性があります。
属性 |
Description |
---|---|
permissionSetReference |
必ず指定します。既定のアクセス許可として使用するアクセス許可セットの ID を指定します。アクセス許可セットは、PermissionSet 要素で宣言します。 |
assemblyRequest
省略可能です。特定のアセンブリのアクセス許可を識別します。この要素は applicationRequestMinimum 要素の子であり、以下の属性があります。
属性 |
Description |
---|---|
Name |
必ず指定します。アセンブリ名を指定します。 |
permissionSetReference |
必ず指定します。このアセンブリに必要なアクセス許可セットの ID を指定します。アクセス許可セットは、PermissionSet 要素で宣言します。 |
requestedPrivileges
省略可能です。この要素は security 要素の子であり、requestedExecutionLevel 要素が含まれています。この要素に属性はありません。
requestedExecutionLevel
省略可能です。アプリケーションを実行するために必要なセキュリティ レベルを指定します。この要素には次の属性があります。子は存在しません。
属性 |
Description |
---|---|
Level |
必ず指定します。アプリケーションが要求するセキュリティ レベルを指定します。次の値を使用できます。 asInvoker。アクセス許可の追加要求を行いません。このレベルでは、追加の信頼プロンプトは不要です。 highestAvailable。親プロセスが利用できる最も高いアクセス許可を要求します。 requireAdministrator。完全な管理者アクセス許可を要求します。 ClickOnce アプリケーションは、asInvoker 値でのみインストールされます。それ以外の値でインストールするとエラーが発生します。 |
uiAccess |
省略可能です。アプリケーションが、保護されたユーザー インターフェイス要素へのアクセスを必要とするかどうかを指定します。指定できる値は true または false です。既定値は false です。署名付きのアプリケーションについては、true に設定する必要があります。 |
解説
ClickOnce アプリケーションで、クライアント コンピューターの既定で与えられる以上のアクセス許可が必要な場合は、より高いレベルの信頼を与えるかどうかを確認するメッセージが、共通言語ランタイム (CLR: Common Language Runtime) の Trust Manager によって表示されます。ユーザーが信頼を与えない場合、アプリケーションは実行されません。信頼を与えた場合は、ここで要求されたアクセス許可で実行されます。
配置マニフェストに有効な信頼ライセンスがある場合には、defaultAssemblyRequest や assemblyRequest を使用して要求されたアクセス許可が、ユーザーに確認することなく与えられます。
アクセス許可の昇格の詳細については、「ClickOnce アプリケーションのセキュリティ」を参照してください。ポリシー配置の詳細については、「信頼されたアプリケーションの配置の概要」を参照してください。
例
次の 3 つのコード例では、ClickOnce による配置のアプリケーション マニフェストで使用する、既定の名前付きセキュリティ ゾーン (Internet、LocalIntranet、および FullTrust) に対応する trustInfo 要素を示しています。
最初の例は、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>
2 番目の例は、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>
3 番目の例は、FullTrust セキュリティ ゾーンで使用できる既定のアクセス許可の trustInfo 要素を示しています。
<trustInfo>
<security>
<applicationRequestMinimum>
<PermissionSet ID="FullTrust" Unrestricted="true" />
<defaultAssemblyRequest permissionSetReference="FullTrust" />
</applicationRequestMinimum>
</security>
</trustInfo>