次の方法で共有


ClickOnce アプリケーションのコード アクセス セキュリティ

ClickOnce アプリケーションは .NET Framework に基づいており、コード アクセスのセキュリティ制約の対象となります。 このため、コード アクセス セキュリティの影響を理解し、それに応じて ClickOnce アプリケーションを記述することが重要です。

コード アクセス セキュリティは、保護されたリソースと操作に対してコードが持つアクセスを制限するのに役立つ、.NET Framework のメカニズムです。 アプリケーション インストーラーの場所に適したゾーンを使用するように、ClickOnce アプリケーションのコード アクセス セキュリティアクセス許可を構成する必要があります。 ほとんどの場合、制限付きアクセス許可セットの 場合はインターネット ゾーンを選択し、より大きなアクセス許可のセットには ローカル イントラネット ゾーンを選択できます。

ClickOnce for .NET Core および .NET 5 以降では、コード アクセス セキュリティはサポートされていません。 .NET Framework では、コード アクセス セキュリティの使用はベスト プラクティスではなく、推奨されません。

既定の ClickOnce コード アクセス セキュリティ

既定では、ClickOnce アプリケーションは、クライアント コンピューターにインストールまたは実行されるときに、完全信頼アクセス許可を受け取ります。

  • 完全信頼のアクセス許可を持つアプリケーションは、ファイル システムやレジストリなどのリソースに無制限にアクセスできます。 これにより、アプリケーション (およびエンド ユーザーのシステム) が悪意のあるコードによって悪用される可能性があります。

  • アプリケーションで完全信頼のアクセス許可が必要な場合は、エンド ユーザーにアプリケーションへのアクセス許可の付与を求められる場合があります。 つまり、アプリケーションは ClickOnce エクスペリエンスを実際には提供せず、プロンプトは経験の少ないユーザーを混乱させる可能性があります。

    CD-ROM などのリムーバブル メディアからアプリケーションをインストールする場合、ユーザーにはメッセージが表示されません。 さらに、ネットワーク管理者は、信頼できるソースからアプリケーションをインストールするときにユーザーにメッセージが表示されないように、ネットワーク ポリシーを構成できます。 詳細については、「信頼されたアプリケーションの展開の概要 」を参照してください。

    ClickOnce アプリケーションのアクセス許可を制限するには、アプリケーションに必要なアクセス許可に最適なゾーンを要求するように、アプリケーションのコード アクセス セキュリティアクセス許可を変更します。 ほとんどの場合、アプリケーションのデプロイ元のゾーンを選択できます。 たとえば、アプリケーションがエンタープライズ アプリケーションの場合は、 ローカル イントラネット ゾーンを使用できます。 アプリケーションがインターネット アプリケーションの場合は、 インターネット ゾーンを使用できます。

セキュリティアクセス許可を構成する

コード アクセス セキュリティのアクセス許可を制限するために、適切なゾーンを要求するように ClickOnce アプリケーションを常に構成する必要があります。 セキュリティのアクセス許可は、プロジェクト デザイナー[セキュリティ] ページで構成できます。

プロジェクト デザイナー[セキュリティ] ページには、[ClickOnce セキュリティ設定を有効にする] チェック ボックスが表示されます。 このチェック ボックスをオンにすると、アプリケーションの配置マニフェストにセキュリティ アクセス許可要求が追加されます。 インストール時に、要求されたアクセス許可がアプリケーションの展開元ゾーンの既定のアクセス許可を超えた場合、ユーザーはアクセス許可を付与するように求められます。 詳細については、「 方法: ClickOnce セキュリティ設定を有効にする」を参照してください。

異なる場所からデプロイされたアプリケーションには、プロンプトを表示することなく、さまざまなレベルのアクセス許可が付与されます。 たとえば、アプリケーションがインターネットからデプロイされると、非常に制限の厳しいアクセス許可のセットを受け取ります。 ローカル イントラネットからインストールすると、より多くのアクセス許可を受け取り、CD-ROM からインストールされると、完全信頼アクセス許可を受け取ります。

アクセス許可を構成するための開始点として、[セキュリティ] ページの [ゾーン] の一覧からセキュリティゾーンを選択できます。 アプリケーションが複数のゾーンからデプロイされる可能性がある場合は、アクセス許可が最も低いゾーンを選択します。 詳細については、「 方法: ClickOnce アプリケーションのセキュリティ ゾーンを設定する」を参照してください。

設定できるプロパティは、アクセス許可セットによって異なります。すべてのアクセス許可セットに構成可能なプロパティがあるわけではありません。 アプリケーションが要求できるアクセス許可の完全な一覧の詳細については、 System.Security.Permissionsを参照してください。 カスタム ゾーンのアクセス許可を設定する方法の詳細については、「 方法: ClickOnce アプリケーションのカスタム アクセス許可を設定する」を参照してください。

アクセス許可が制限されているアプリケーションをデバッグする

開発者は、ほとんどの場合、完全信頼アクセス許可を持つ開発用コンピューターを実行します。 そのため、ユーザーがアクセス許可を制限してアプリケーションを実行したときに表示される可能性があるアプリケーションをデバッグする場合、同じセキュリティ例外は表示されません。

これらの例外をキャッチするには、エンド ユーザーと同じアクセス許可でアプリケーションをデバッグする必要があります。 アクセス許可が制限されたデバッグは、プロジェクト デザイナー[セキュリティ] ページで有効にすることができます。

アクセス許可が制限されたアプリケーションをデバッグすると、[ セキュリティ ] ページで有効になっていないコード セキュリティ要求に対して例外が発生します。 例外ヘルパーが表示され、例外を防ぐためにコードを変更する方法に関する提案が表示されます。

さらに、コードを記述すると、コード エディターの IntelliSense 機能によって、構成したセキュリティ アクセス許可に含まれていないメンバーが無効になります。

詳細については、「 方法: アクセス許可が制限された ClickOnce アプリケーションをデバッグする」を参照してください

ブラウザーでホストされるアプリケーションのセキュリティアクセス許可

Visual Studio には、Windows Presentation Foundation (WPF) アプリケーション用に次の種類のプロジェクトが用意されています。

  • WPF Windows アプリケーション

  • WPF Web ブラウザー アプリケーション

  • WPF カスタム コントロール ライブラリ

  • WPF サービス ライブラリ

    これらのプロジェクトの種類では、WPF Web ブラウザー アプリケーションのみが Web ブラウザーでホストされるため、特別な展開とセキュリティ設定が必要です。 これらのアプリケーションの既定のセキュリティ設定は次のとおりです。

  • ClickOnce セキュリティ設定を有効にする

  • これは部分信頼アプリケーションです

  • インターネット ゾーン (WPF Web ブラウザー アプリケーションの既定のアクセス許可が選択されている)

    [ セキュリティの詳細設定] ダイアログ ボックスで、[ 選択したアクセス許可セットを使用してこのアプリケーションをデバッグ する] チェック ボックスがオンおよび無効になっています。 これは、ブラウザーでホストされているアプリケーションでは、[ゾーン内のデバッグ] をオフにできないためです。