วิธีการใช้คุณลักษณะ AllowPartiallyTrustedCallers เพื่อที่เรียกใช้แอสเซมบลีที่มีชื่อที่แน่นหนาจากเว็บเพจ โดยใช้ Visual .NET c#, Visual 2005 c# หรือรุ่นที่ใหม่กว่า

การแปลบทความ การแปลบทความ
หมายเลขบทความ (Article ID): 839300 - ผลิตภัณฑ์ที่เกี่ยวข้องในบทความนี้
สิ่งสำคัญบทความนี้ประกอบด้วยข้อมูลที่แสดงวิธีการที่ช่วยลดการตั้งค่าการรักษาความปลอดภัยหรือวิธีการปิดคุณลักษณะการรักษาความปลอดภัยบนเครื่องคอมพิวเตอร์ คุณสามารถเปลี่ยนแปลงการตั้งค่าเหล่านี้ เพื่อแก้ปัญหาเฉพาะแต่ละอย่างได้ ก่อนที่คุณจะเปลี่ยนแปลงการตั้งค่าเหล่านี้ เราขอแนะนำให้คุณประเมินความเสี่ยงที่เกี่ยวข้องกับการใช้วิธีแก้ปัญหานี้ในสภาพแวดล้อมของคุณ หากคุณดำเนินการนี้ โปรดดำเนินการตามขั้นตอนเสริม เพื่อช่วยป้องกันระบบของคุณ
ขยายทั้งหมด | ยุบทั้งหมด

เนื้อหาบนหน้านี้

สรุป

คุณอาจต้องเรียกใช้ตัวควบคุมผู้ใช้ของ Windows จากเว็บเพจ เมื่อต้องการเรียกใช้ตัวควบคุมผู้ใช้การ Windows ที่สามารถเข้าถึงทรัพยากรที่มีความปลอดภัย และที่สร้างเป็นแอสเซมบลีที่มีชื่อที่เข้มงวด คุณต้องเลือกแอสเซมบลีของตัวควบคุมผู้ใช้ของ Windows ด้วยAllowPartiallyTrustedแอตทริบิวต์ของแอสเซมบลี คุณต้องมีการเรียกassertวิธีการที่อนุญาตให้มีการควบคุมผู้ใช้ของ Windows ในการเข้าถึงทรัพยากรที่มีความปลอดภัย

บทนำ

บทความที่มีการทีละขั้นตอนนี้อธิบายวิธีการเรียกใช้ Windows ผู้ใช้ควบคุมจากเว็บเพจนั้น ตัวควบคุมผู้ใช้ของ Windows ที่บทความนี้ถูกสร้างเป็นแอสเซมบลีที่มีชื่อที่รัดกุม ตัวอย่างในบทความนี้อธิบายวิธีใช้นี้AllowPartiallyTrustedCallersแอตทริบิวต์ของแอสเซมบลีเพื่อให้สามารถเข้าถึงแอสเซมบลีที่มีชื่อที่แน่นหนาจากเว็บเพจนั้น ตัวอย่างในบทความนี้ยังอธิบายวิธีใช้นี้assertวิธีการ

สร้างคู่คีย์ที่มีชื่อที่รัดกุม

คู่คีย์ที่มีชื่อที่รัดกุมได้มีใช้การเข้าสู่ระบบแอสเซมบลีสำหรับตัวควบคุมผู้ใช้ที่มีชื่อที่รัดกุม ชื่อที่ซับซ้อนถูกใช้เมื่อคุณสร้างกลุ่มของรหัสที่ให้สิทธิ์ในการใช้แอสเซมบลีจากรหัสที่เชื่อถือได้เพียงบางส่วน
  1. เปิดพร้อมท์คำสั่ง Visual Studio

    Microsoft ในคลิก Visual Studio .NET 2002เริ่มการทำงานชี้ไปที่โปรแกรมชี้ไปที่Microsoft Visual Studio .NETชี้ไปที่เครื่องมือการ.NET visual Studioแล้ว คลิกvisual Studio .NET คำสั่งพร้อมท์. Visual Studio .NET การพรอมต์คำสั่งหน้าต่างปรากฏขึ้น

    ใน Microsoft Visual Studio .NET 2003 คลิกเริ่มการทำงานชี้ไปที่โปรแกรมชี้ไปที่Microsoft Visual Studio .NET 2003ชี้ไปที่visual เครื่องมือการ.NET Studioแล้ว คลิกvisual Studio .NET การพรอมต์คำสั่ง 2003. หน้าต่างพร้อม Visual Studio .NET 2003 รับคำสั่งปรากฏขึ้น

    ใน Visual Studio 2005 คลิกเริ่มการทำงานชี้ไปที่โปรแกรมชี้ไปที่Microsoft Visual Studio 2005ชี้ไปที่เครื่องมือการ 2005 visual Studioแล้ว คลิกvisual Studio 2005 คำสั่งพร้อมท์. ใน Visual Studio 2005 คำสั่งหน้าต่างพร้อมต์ปรากฏขึ้น

    ใน Visual Studio 2008 คลิกเริ่มการทำงานชี้ไปที่โปรแกรมชี้ไปที่Microsoft Visual Studio 2008ชี้ไปที่เครื่องมือการ 2008 visual Studioแล้ว คลิกvisual Studio 2008 คำสั่งพร้อมท์. หน้าต่างพร้อมท์ 2008Command Visual Studio ปรากฏขึ้น
  2. พิมพ์คำสั่งต่อไปนี้ที่พรอมต์คำสั่ง แล้วกด ENTER::
    c:\snKey.snk -k sn

สร้างตัวควบคุมผู้ใช้ของ Windows โดยใช้ Microsoft Visual c# .NET, Microsoft Visual c# 2005 หรือรุ่นที่ใหม่กว่า

คำเตือนวิธี แก้ ปัญหา นี้ อาจ ทำ ให้ คอมพิวเตอร์ ของ คุณ หรือ เครือ ข่าย ของ คุณ เสี่ยง ใน การ โจมตี โดย ผู้ ใช้ ที่ เป็น อันตราย หรือ ซอฟต์แวร์ ที่ เป็น อันตราย เช่น ไวรัส ได้ เราไม่แนะนำให้คุณใช้วิธีนี้ เพียงแต่เสนอข้อมูลนี้เพื่อให้คุณสามารถใช้วิธีการนี้ตามดุลยพินิจของคุณเอง คุณต้องยอมรับความเสี่ยงในการใช้วิธีการนี้ด้วยตนเอง

ตัวควบคุมผู้ใช้นี้อธิบายวิธีใช้นี้AllowPartiallyTrustedCallersแอตทริบิวต์ของแอสเซมบลี แอสเซมบลีที่มีชื่อที่รัดกุมสามารถเท่านั้นถูกเรียก โดยผู้เรียกที่เชื่อถือได้อย่างสมบูรณ์จนกว่าใช้แอสเซมบลีAllowPartiallyTrustedCallersแอตทริบิวต์ ตัวอย่างสำหรับการควบคุมผู้ใช้ยังแสดงวิธีใช้นี้assertวิธีการ กระบวนการassertเมธอด declares รหัสเรียกสามารถใช้รหัสที่เรียกนั้นassertวิธีการเข้าถึงทรัพยากรที่ได้รับการป้องกันตามความต้องการสิทธิ์ รหัสสามารถเข้าถึงทรัพยากรแม้ว่าผู้เรียกที่สูงกว่าในกองซ้อนได้ไม่ได้รับสิทธิ์การเข้าถึงทรัพยากร

ตัวควบคุมผู้ใช้นี้ช่วยให้คุณเลือกแฟ้ม โดยใช้กล่องโต้ตอบที่เปิด ตัวควบคุมเปิดแฟ้มข้อความในกล่องรายการแล้ว อินเทอร์เฟซสำหรับผู้ใช้ของตัวควบคุมผู้ใช้นี้มีกล่องข้อความหนึ่งและกล่องรายการหนึ่ง กล่องข้อความแสดงชื่อของแฟ้มที่เลือก และกล่องรายการแสดงเนื้อหาของแฟ้มที่เลือก

เมื่อต้องการอ่านชื่อของแฟ้มที่เลือกจากนั้นOpenFileDialogกล่อง และ การอ่านแฟ้ม FileIOPermission ต้องได้รับสิทธิ์ชนิด การควบคุมผู้ใช้ต้องมีสิทธิ์นี้อนุญาตให้ดูกลุ่มของรหัส เว็บเพจที่เรียกตัวควบคุมไม่มีสิทธิ์นี้

เมื่อต้องการป้องกัน walk ของสแตกที่ไม่สำเร็จเนื่องจากผู้เรียกไม่มีสิทธิ์ชนิดของ FileIOPermission จำเป็น ใช้assertวิธีการ หมายเหตุที่นั้นassertวิธีสามารถเปิดช่องโหว่การรักษาความปลอดภัยหากการassertใช้วิธีการอย่างไม่ถูกต้อง หรือ inappropriately ดังนั้น คุณต้องใช้การassertวิธีการ ด้วยความระมัดระวังดีมาก aRevertAssertต้องการทำตามวิธีการassertเมธอดทันทีที่การดำเนินการแฟ้มเสร็จสมบูรณ์แล้ว

หมายเหตุ:เมื่อต้องการตรวจสอบให้แน่ใจว่า สามารถแสดงเนื้อหาของแฟ้มได้อย่างถูกต้องไม่ในกล่องรายการ ใช้ตัวควบคุมนี้ผู้ใช้เพื่อเลือกแฟ้มข้อความเท่านั้น
  1. เริ่ม Microsoft Visual Studio .NET, Microsoft Visual Studio 2005 หรือรุ่นที่ใหม่กว่าของ Visual Studio
  2. ในการแฟ้ม:เมนู ให้ชี้ไปที่ใหม่แล้ว คลิกProject. กระบวนการโครงการใหม่กล่องโต้ตอบปรากฏขึ้น
  3. ภายใต้ชนิดโครงการคลิกvisual c# โครงการ.

    หมายเหตุ:ใน Visual Studio คลิกvisual c#ภายใต้ชนิดโครงการ.
  4. ภายใต้แม่แบบคลิกwindows ไลบรารีตัวควบคุม.
  5. ในการชื่อ:กล่อง ชนิดUserControl.
  6. คลิกตกลง.
  7. คลิกขวาในหน้าต่าง Explorer โซลูชัน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. คลิกขวาใน Explorer โซลูชัน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. ใน Microsoft Visual Studio .NET 2002 คลิกสองครั้งตั้งค่าคอนฟิกกรอบงาน microsoft .NET. กระบวนการ.NET ตั้งค่าคอนฟิกกรอบการทำงานหน้าต่างปรากฏขึ้น

    สำหรับ Microsoft Visual Studio .NET 2003 คลิกสองครั้งกรอบงาน microsoft .NET 1.1 ตั้งค่าคอนฟิก. กระบวนการการตั้งค่าคอนฟิก.NET 1.1หน้าต่างปรากฏขึ้น

    ใน Microsoft Visual Studio 2005 หรือรุ่นที่ใหม่กว่า คลิกสองครั้งตั้งค่าคอนฟิกกรอบงาน 2.0 microsoft .NET. กระบวนการ.NET ตั้งค่าคอนฟิกกรอบงาน 2.0หน้าต่างปรากฏขึ้น
  4. ในบานหน้าต่างด้านซ้าย ขยายการรักษาความปลอดภัยรันไทม์นโยบายขยายMachine :แล้ว ขยายรหัสกลุ่ม.
  5. คลิกขวาAll_Codeแล้ว คลิกใหม่. ตัวช่วยสร้างสร้าง กลุ่มของรหัสที่ปรากฏขึ้น
  6. ตรวจสอบให้แน่ใจว่าสร้างรหัสกลุ่มใหม่มีเลือก พิมพ์MyUserControlCodeGroupในการชื่อ:กล่อง แล้วคลิกถัดไป. กระบวนการเลือกชนิดของเงื่อนไขหน้าปรากฏขึ้น
  7. ในการเลือกชนิดของเงื่อนไขสำหรับกลุ่มนี้รหัสรายการ คลิกชื่อที่รัดกุม.
  8. คลิกนำเข้า. กระบวนการนำเข้าแรงชื่อจากแอสเซมบลีกล่องโต้ตอบปรากฏขึ้น
  9. ค้นหาแฟ้ม UserControl.dll ที่คุณสร้างไว้ในส่วน "สร้างตัวควบคุมผู้ใช้ของ Windows โดยใช้ Microsoft Visual c# .NET, Microsoft Visual c# 2005 หรือรุ่นที่ใหม่กว่า" และจากนั้น คลิกOPEN.
  10. คลิกถัดไป. กระบวนการกำหนดชุดของการอนุญาตไปยัง กลุ่มของรหัสหน้าปรากฏขึ้น
  11. คลิกใช้การตั้งค่าสิทธิ์ที่มีอยู่เลือกFullTrustจากรายการ แล้วคลิกถัดไป. กระบวนการการดำเนินการตัวช่วยสร้างหน้าปรากฏขึ้น
  12. คลิกเสร็จสิ้นเมื่อต้องการปิดตัวช่วยสร้างสร้าง กลุ่มของรหัส

สร้างแฟ้ม HTML มีการเรียกใช้การควบคุมผู้ใช้

หลังจากที่คุณทำสร้างรหัสกลุ่มการกำหนดสิทธิ์สำหรับแอสเซมบลี คุณต้องสร้างแฟ้ม HTML มีการเรียกใช้การควบคุมผู้ใช้จากเบราว์เซอร์ และคุณต้องตั้งค่าสภาพแวดล้อมการทำงานการตรวจสอบให้แน่ใจว่า ตัวควบคุมผู้ใช้ที่เรียกว่าเสร็จสมบูรณ์แล้ว
  1. คลิกเริ่มการทำงานคลิกเรียกใช้ประเภท:notepadแล้ว คลิกตกลง.
  2. ใน Notepad วางรหัสต่อไปนี้:
    <OBJECT id="MyWinControl1" height="200" width="200" classid="http:UserControl.dll#UserControl.UserControl1" VIEWASTEXT>
        
    </OBJECT> 
  3. ในโฟลเดอร์รากของข้อมูลทางอินเทอร์เน็ตของ Microsoft Services (IIS), บันทึกแฟ้มเป็น CallUserControl.htm
  4. การคัดลอกแฟ้ม UserControl.dll ที่คุณสร้างในส่วน "สร้างตัวควบคุมผู้ใช้ของ Windows โดยใช้ Microsoft Visual c# .NET, Microsoft Visual c# 2005 หรือรุ่นที่ใหม่กว่า" ไปยังโฟลเดอร์รากของ IIS
  5. เปิด Microsoft Internet Explorer
  6. ในการที่อยู่กล่อง ชนิดhttp://localhost/CallUserControl.htmแล้ว กด ENTER กระบวนการOPENกล่องโต้ตอบปรากฏขึ้น
  7. แฟ้มข้อความใด ๆ การค้นหา และจากนั้น คลิกOPEN. ข้อความของแฟ้มที่ปรากฏขึ้นในการกล่องรายการควบคุมในเบราว์เซอร์

ข้อมูลอ้างอิง

สำหรับข้อมูลเพิ่มเติม แวะไปไซต์เว็บ Network (MSDN) นักพัฒนา Microsoft ต่อไปนี้:
การตั้งค่าคอนฟิกกลุ่มรหัสที่ใช้เครื่องมือตั้งค่าคอนฟิกกรอบงาน.NET
.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)

ความปลอดภัย briefs: ชื่อที่ซับซ้อนและความปลอดภัยใน.NET Framework
http://msdn2.microsoft.com/en-us/library/aa302416.aspx

คุณสมบัติ

หมายเลขบทความ (Article ID): 839300 - รีวิวครั้งสุดท้าย: 18 ตุลาคม 2553 - Revision: 2.0
ใช้กับ
  • Microsoft Visual C# 2005 Express Edition
  • Microsoft Visual C# .NET 2003 Standard Edition
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft Visual C# 2008 Express Edition
Keywords: 
kbhowtomaster kbhowto kblistbox kbfileio kbdll kbcontrol kbweb kbuser kbsecurity kbpolicy kbopenfile kbmt KB839300 KbMtth
แปลโดยคอมพิวเตอร์
ข้อมูลสำคัญ: บทความนี้แปลโดยซอฟต์แวร์การแปลด้วยคอมพิวเตอร์ของ Microsoft แทนที่จะเป็นนักแปลที่เป็นบุคคล Microsoft มีบทความที่แปลโดยนักแปลและบทความที่แปลด้วยคอมพิวเตอร์ เพื่อให้คุณสามารถเข้าถึงบทความทั้งหมดในฐานความรู้ของเรา ในภาษาของคุณเอง อย่างไรก็ตาม บทความที่แปลด้วยคอมพิวเตอร์นั้นอาจมีข้อบกพร่อง โดยอาจมีข้อผิดพลาดในคำศัพท์ รูปแบบการใช้ภาษาและไวยากรณ์ เช่นเดียวกับกรณีที่ชาวต่างชาติพูดผิดเมื่อพูดภาษาของคุณ Microsoft ไม่มีส่วนรับผิดชอบต่อความคลาดเคลื่อน ความผิดพลาดหรือความเสียหายที่เกิดจากการแปลเนื้อหาผิดพลาด หรือการใช้บทแปลของลูกค้า และ Microsoft มีการปรับปรุงซอฟต์แวร์การแปลด้วยคอมพิวเตอร์อยู่เป็นประจำ
ต่อไปนี้เป็นฉบับภาษาอังกฤษของบทความนี้:839300

ให้ข้อเสนอแนะ

 

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