AllowPartiallyTrustedCallers 属性を使用して、Visual C# を使用して、Web ページからの厳密な名前を持つアセンブリを呼び出す方法NET、Visual C# 2005年またはそれ以降のバージョン

文書翻訳 文書翻訳
文書番号: 839300
重要です この資料でには支援する方法を示す情報が含まれています。低レベルのセキュリティ設定やコンピューターのセキュリティ機能を無効にする方法。、特定の問題を回避するには、このような変更を行います。これらを行う前に変更に関連付けられているリスクを評価するお特定の環境でこの回避策を実装します。実装する要素この回避策、いずれかの適切な保護のために追加の手順が、システムです。
すべて展開する | すべて折りたたむ

目次

概要

Windows ユーザー コントロールを Web ページからコールすることができます。セキュリティで保護されたリソースにアクセスできることと、厳密な名前を持つアセンブリとして構築された Windows ユーザー コントロールを呼び出すには、Windows のユーザー コントロールにアセンブリをマークする必要があります、 AllowPartiallyTrusted アセンブリの属性です。呼び出しを含める必要があります、 アサート Windows ユーザー コントロールには、セキュリティで保護されたアクセスを許可する方法リソースです。

はじめに

この資料では、Windows を呼び出す方法をについて説明します。ユーザー コントロールを Web ページから。Windows ユーザーを制御すると、この資料説明に厳密な名前を持つアセンブリが作成されます。このサンプルでは、これは使用する方法の説明、 AllowPartiallyTrustedCallers 属性は、アセンブリのように、強力なを持つアセンブリ名前は、Web ページからアクセスできます。また、この資料のサンプルでの説明します。使用する方法を アサート メソッドです。

厳密な名前を持つキー ペアを作成します。

厳密な名前を持つキー ペアを使用してアセンブリに署名するには厳密な名前を持つユーザー コントロール。作成と厳密な名前が使用されます。部分的に信頼されたアセンブリを使用する権限を付与するコード グループコードです。
  1. Visual Studio のコマンド プロンプトを開きます。

    Microsoft ではVisual Studio。Net 2002 を実行をクリックしてください 開始、ポイントプログラム、ポイント マイクロソフト Visual Studio.NET、ポイント Visual Studio。NET のツール、し、クリックしてください。 Visual Studio。NET コマンド プロンプト.Visual Studio の.NET コマンド プロンプト] ウィンドウが表示されます。

    マイクロソフトの Visual Studio で。NET2003 年をクリックします。 開始、ポイント プログラム、ポイントするには マイクロソフトの Visual Studio。NET 2003、ポイント ビジュアルStudio します。NET のツール、し Visual Studio。NET 2003コマンド プロンプト.Visual Studio。NET 2003 コマンド プロンプト] ウィンドウ表示されます。

    Visual Studio 2005 年にをクリックします。開始、ポイント プログラム、ポイントMicrosoft Visual Studio 2005、ポイント Visual Studio2005 ツール、し Visual Studio 2005年コマンドメッセージを表示します。.Visual Studio 2005年のコマンド プロンプト ウィンドウ表示されます。

    Visual Studio 2008 をクリックします。開始、ポイント プログラム、ポイントMicrosoft Visual Studio 2008、ポイント Visual Studio2008 ツール、し Visual Studio 2008年コマンドメッセージを表示します。.Visual Studio 2008Command のプロンプト表示されます。
  2. コマンド プロンプトで、次を入力し、キーを押します。入力します。
    sn-k c:\snKey.snk

Windows のユーザー コントロールを作成するには、Microsoft Visual C# を使用します。NET、マイクロソフト Visual C# 2005年またはそれ以降のバージョン

警告 この回避策、コンピューターやネットワークより多くなる可能性があります。などの悪意のあるユーザーや悪質なソフトウェアによる攻撃に対する脆弱性ウイルス。この回避策はお勧めしませんが、この情報を提供します。独自の判断でこの回避策を実装できるようにします。これを使用します。回避策は各自の責任で。

このユーザー コントロール使用する方法を示しています、 AllowPartiallyTrustedCallers アセンブリの属性を指定します。アセンブリに厳密な名前を持つことができます。のみ呼び出すことが、完全に信頼された呼び出し元によって、アセンブリを使用する場合を除き、 AllowPartiallyTrustedCallers 属性です。ユーザー コントロールのサンプルも示しますどのように使用するのには アサート メソッドです。は、 アサート 呼び出し元のコードを呼び出すコードことができますメソッドを宣言します。は、 アサート アクセス許可によって保護されているリソースにアクセスする方法必要に応じてします。呼び出し元の上位にある場合でも、コード リソースにアクセスできる、スタックがいない与えられて、リソースへのアクセス許可。

これユーザー コントロールを使用すると、[開く] ダイアログ ボックスを使用してファイルを選択できます。コントロール[リスト ボックスでテキスト ファイルを開きます。このユーザーのユーザー インターフェイスコントロールには、1 つのテキスト ボックスと 1 つのリスト ボックスが含まれます。テキスト ボックスに名前が表示されます。選択したファイルの一覧ボックスに表示されます、ファイルの内容選択されています。

選択したファイルの名前を参照するのには OpenFileDialog ボックスで、ファイルでは、FileIOPermission を参照してアクセス許可の種類を許可する必要があります。ユーザー コントロールはこのアクセス許可が必要コード グループによって与えられて。コントロールを呼び出す Web ページをしません。このアクセス許可があります。

成功していません、スタック ウォークを防ぐために呼び出し元必要 FileIOPermission アクセス許可の種類があるないため、使用して、 アサート メソッドです。なお、 アサート メソッドとセキュリティ上の脆弱性を開くすることができます、 アサート メソッドは、不適切に、または不適切な使用されます。そのためには、使用する必要があります、 アサート 方法は十分に注意します。A RevertAssert メソッドを実行してください、 アサート ファイル操作が完了すると、すぐに方法です。

メモ ファイルの内容が正常に表示されているかどうかを確認するのにはリスト ボックスで、このユーザー コントロールを使用してテキスト ファイルのみを選択します。
  1. Microsoft Visual Studio を起動します。NET では、Microsoft VisualStudio 2005 年またはそれ以降のバージョンの Visual Studio。
  2. で、 ファイル メニューのポイント新しい、し プロジェクト.は、 新しいプロジェクト ダイアログ ボックスが表示されます。
  3. 下にあります。 [プロジェクトの種類をクリックして ビジュアルC# プロジェクト.

    メモ Visual Studio をクリックします。 Visual C# 下にあります。[プロジェクトの種類.
  4. 下にあります。 テンプレートをクリックして Windowsコントロール ライブラリ.
  5. で、 名前 ボックスの種類ユーザー コントロール.
  6. クリックしてください。 [OK].
  7. ソリューション エクスプ ローラー] ウィンドウで、右クリックします。[UserControl1.cs、し [コードの表示.[UserControl1.cs ファイルが表示されます。
  8. 既存のコードを次のコードに置き換えます。
    using System;
    using System.Collections;
    using System.ComponentModel;
    using System.Drawing;
    using System.Data;
    using System.Windows.Forms;
    using System.IO;
    using System.Security;
    using System.Security.Permissions;
    using System.Reflection;
    using System.Runtime.CompilerServices;
    
    [assembly:AllowPartiallyTrustedCallers]
    
    namespace UserControl
    {
    	/// <summary>
    	/// Summary description for UserControl1.
    	/// </summary>
    	public class UserControl1 : System.Windows.Forms.UserControl
    	{
    		private System.Windows.Forms.TextBox textBox1;
    		private System.Windows.Forms.ListBox listBox1;
    		/// <summary>
    		/// Required designer variable.
    		/// </summary>
    		private System.ComponentModel.Container components = null;
    
    		public UserControl1()
    		{
    			// This call is required by the Windows.Forms Form Designer.
    			InitializeComponent();
    
    			// TODO: Add any initialization after the InitForm call.
    			OpenFileDialog fileDialog = new OpenFileDialog();
    			if(fileDialog.ShowDialog() == DialogResult.OK)
    			{
    				// Reading the name of the selected file from the OpenFileDialog box
    				// and reading the file requires FileIOPermission.   
    				// The Assert command must be followed by a RevertAssert as soon as the file operation 
    				// is completed.
    				new FileIOPermission(PermissionState.Unrestricted).Assert();
    				textBox1.Text = fileDialog.FileName;
    				// Display the contents of the file in the text box.
    				FileStream fsIn = new FileStream(textBox1.Text, FileMode.Open, FileAccess.Read, 
    					FileShare.Read);
    				StreamReader sr = new StreamReader(fsIn);
    			
    				// Process every line in the file.
    				for (String Line = sr.ReadLine(); Line != null; Line = sr.ReadLine()) 
    				{
    					listBox1.Items.Add(Line);
    				}
    				// It is very important to call RevertAssert to restore the stack walk for
    				// file operations.
    				FileIOPermission.RevertAssert();
    			}
    
    		}
    
    		/// <summary>
    		/// Clean up any resources that are being used.
    		/// </summary>
    		protected override void Dispose( bool disposing )
    		{
    			if( disposing )
    			{
    				if( components != null )
    					components.Dispose();
    			}
    			base.Dispose( disposing );
    		}
    
    		#region Component Designer generated code
    		/// <summary>
    		/// Required method for Designer support. Do not modify 
    		/// the contents of this method with the code editor.
    		/// </summary>
    		private void InitializeComponent()
    		{
    			this.textBox1 = new System.Windows.Forms.TextBox();
    			this.listBox1 = new System.Windows.Forms.ListBox();
    			this.SuspendLayout();
    			// 
    			// textBox1
    			// 
    			this.textBox1.Location = new System.Drawing.Point(32, 16);
    			this.textBox1.Name = "textBox1";
    			this.textBox1.TabIndex = 0;
    			this.textBox1.Text = "textBox1";
    			// 
    			// listBox1
    			// 
    			this.listBox1.Location = new System.Drawing.Point(144, 16);
    			this.listBox1.Name = "listBox1";
    			this.listBox1.Size = new System.Drawing.Size(120, 95);
    			this.listBox1.TabIndex = 1;
    			// 
    			// UserControl1
    			// 
    			this.Controls.Add(this.listBox1);
    			this.Controls.Add(this.textBox1);
    			this.Name = "UserControl1";
    			this.Size = new System.Drawing.Size(376, 120);
    			this.ResumeLayout(false);
    
    		}
    		#endregion
    			}
    }
    
  9. ソリューション エクスプ ローラーで右クリックします。AssemblyInfo.cs、し [コードの表示.AssemblyInfo.cs ファイルが表示されます。
  10. 次のコードを見つけます。
    [assembly: AssemblyVersion("1.0.*")]
    このコードを次のコードに置き換えます。
    [assembly: AssemblyVersion("1.0.0.0")]
  11. 次のコードを見つけます。
    [assembly: AssemblyKeyFile("")]
    このコードを次のコードに置き換えます。
    [assembly: AssemblyKeyFile("c:\\snKey.snk")]
  12. で、 ビルド メニューをクリックして ビルドソリューション.

アセンブリのアクセス許可を割り当てるコード グループを作成するには

警告 この回避策、コンピューターやネットワークより多くなる可能性があります。などの悪意のあるユーザーや悪質なソフトウェアによる攻撃に対する脆弱性ウイルス。この回避策はお勧めしませんが、この情報を提供します。独自の判断でこの回避策を実装できるようにします。これを使用します。回避策は各自の責任で。

コード グループを判断します。アセンブリには呼ばれます管理者によって定義された条件と一致するかどうかメンバーシップの条件として。アセンブリに一致したかどうか、コード グループの許可がアセンブリ コードに関連付けられている一連のアクセス許可グループです。

コード グループを作成するのには:
  1. クリックしてください。 開始、ポイント設定、し コントロール パネル.は、コントロール パネル ウィンドウが表示されます。
  2. ダブルクリック 管理ツール.は、管理ツール ウィンドウが表示されます。
  3. マイクロソフトの Visual Studio で。Net 2002 を実行、ダブルクリック[マイクロソフト]。NET Framework の構成.は、 .NETフレームワークの構成 ウィンドウが表示されます。

    開発についてStudio します。NET 2003、ダブルクリック [マイクロソフト]。NET Framework 1.1構成.は、 .NET 構成 1.1 ウィンドウ表示されます。

    Microsoft Visual Studio 2005年またはそれ以降のバージョンをダブルクリックします。[マイクロソフト]。NET Framework 2.0 の構成.は、 .NETFramework 2.0 構成 ウィンドウが表示されます。
  4. 左側のペインでを展開します。 実行時のセキュリティポリシーを展開 マシン、し展開 コードグループ.
  5. 右クリックします。 All_Code、し新しい.コード グループの作成ウィザードが表示されます。
  6. 確認してください。 新しいコード グループを作成します。 です選択したを入力します。 MyUserControlCodeGroup で、名前 ボックスとクリック 次へ.は、条件の種類を選択します。 ページが表示されます。
  7. で、 条件の種類を次のコードを選択します。グループ ボックスの一覧でクリックしてください 厳密な名前.
  8. クリックしてください。 インポート.は、 インポート厳密なアセンブリ名 ダイアログ ボックスが表示されます。
  9. 作成した UserControl.dll ファイルを探し、"Microsoft Visual C# を使用して、Windows のユーザー コントロールを作成します。NET、Microsoft Visual C# 2005年またはそれ以降のバージョン」のセクションをし ファイルを開く.
  10. クリックしてください。 次へ.は、 割り当ては、アクセス許可セットをコード グループ ページが表示されます。
  11. クリックしてください。 既存のアクセス許可セットを使用します。を選択FullTrust クリックし、リストから 次へ.は、 ウィザードを完了します。 ページが表示されます。
  12. クリックしてください。 終了日 コードの作成を終了するにはグループ ウィザードします。

ユーザー コントロールを呼び出すには、HTML ファイルを作成します。

アクセス許可を割り当てるコード グループを作成した後、アセンブリ、ユーザー コントロールから呼び出すための HTML ファイルを作成する必要がブラウザー環境のユーザーが制御しているかどうかを確認するのには設定する必要があります。正常に呼び出されます。
  1. クリックしてください。 開始をクリックして 実行,種類 メモ帳、し[OK].
  2. メモ帳で、次のコードを貼り付けます。
    <OBJECT id="MyWinControl1" height="200" width="200" classid="http:UserControl.dll#UserControl.UserControl1" VIEWASTEXT>
        
    </OBJECT> 
  3. Microsoft Insight のルート フォルダーにサービス (IIS)、ファイル CallUserControl.htm として保存します。
  4. 作成した UserControl.dll ファイルをコピー、"Microsoft Visual C# を使用して、Windows のユーザー コントロールを作成します。NET、Microsoft Visual C# 2005年またはそれ以降のバージョン」のセクションには、IIS のルートフォルダーです。
  5. Microsoft Internet Explorer を開きます。
  6. で、 アドレス ボックスの種類http://localhost/CallUserControl.htm、し、キーを押します。入力します。は、 ファイルを開く ダイアログ ボックスが表示されます。
  7. 任意のテキスト ファイルを見つけてクリックしてください ファイルを開く.ファイルのテキストの表示、 リスト ボックス ブラウザーを制御します。

関連情報

詳細については、以下を参照してください。開発者 (MSDN) Web サイト。
構成のコード グループを使用して、します。NET Framework の構成ツール
.aspx の http://msdn2.microsoft.com/en-us/library/eb8xw74a (vs.71)

CodeAccessPermission.Assert メソッド
.aspx の http://msdn2.microsoft.com/en-us/library/system.security.codeaccesspermission.assert (vs.71)

.NET フレームワーク アセンブリおよび AllowPartiallyTrustedCallers 属性
http://msdn2.microsoft.com/en-us/library/aa302328.aspx

AllowPartiallyTrustedCallersAttribute クラス
.aspx の http://msdn2.microsoft.com/en-us/library/system.security.allowpartiallytrustedcallersattribute (vs.71)

アセンブリのセキュリティに関する考慮事項
.aspx の http://msdn2.microsoft.com/en-us/library/ab4eace3 (vs.71)

セキュリティの概要: 厳密な名前とセキュリティの。NET Framework
http://msdn2.microsoft.com/en-us/library/aa302416.aspx

プロパティ

文書番号: 839300 - 最終更新日: 2011年7月30日 - リビジョン: 6.0
キーワード:?
kbhowto kbhowtomaster kbuser kblistbox kbdll kbpolicy kbweb kbsecurity kbfileio kbcontrol kbopenfile kbmt KB839300 KbMtja
機械翻訳の免責
重要: このサポート技術情報 (以下「KB」) は、翻訳者による翻訳の代わりに、マイクロソフト機械翻訳システムによって翻訳されたものです。マイクロソフトは、お客様に、マイクロソフトが提供している全ての KB を日本語でご利用いただけるように、翻訳者による翻訳 KB に加え機械翻訳 KB も提供しています。しかしながら、機械翻訳の品質は翻訳者による翻訳ほど十分ではありません。誤訳や、文法、言葉使い、その他、たとえば日本語を母国語としない方が日本語を話すときに間違えるようなミスを含んでいる可能性があります。マイクロソフトは、機械翻訳の品質、及び KB の内容の誤訳やお客様が KB を利用されたことによって生じた直接または間接的な問題や損害については、いかなる責任も負わないものとします。マイクロソフトは、機械翻訳システムの改善を継続的に行っています。
英語版 KB:839300
Microsoft Knowledge Base の免責: Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。

フィードバック

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com