Με τη χρήση του χαρακτηριστικού AllowPartiallyTrustedCallers για την κλήση μιας συγκρότησης που έχει ισχυρό όνομα από μια ιστοσελίδα χρησιμοποιώντας το Visual C# .NET, Visual C# 2005 ή νεότερες εκδόσεις

Μεταφράσεις άρθρων Μεταφράσεις άρθρων
Αναγν. άρθρου: 839300 - Δείτε τα προϊόντα στα οποία αναφέρεται το συγκεκριμένο άρθρο.
ΣημαντικόΑυτό το άρθρο περιέχει πληροφορίες που σας δείχνει πώς μπορείτε να βοηθήσετε να ελαττώσετε το επίπεδο ασφαλείας ή για την απενεργοποίηση των δυνατοτήτων ασφαλείας σε έναν υπολογιστή. Μπορείτε να κάνετε αυτές τις αλλαγές για να αντιμετωπίσετε ένα συγκεκριμένο πρόβλημα. Προτού κάνετε αυτές τις αλλαγές, συνιστάται να εκτιμήσετε τους κινδύνους που σχετίζονται με την εφαρμογή αυτού του εναλλακτικού τρόπου αντιμετώπισης στο συγκεκριμένο περιβάλλον που χρησιμοποιείτε. Εάν εφαρμόσετε αυτόν τον εναλλακτικό τρόπο αντιμετώπισης, λάβετε τα κατάλληλα πρόσθετα μέτρα για την προστασία του συστήματός σας.
Ανάπτυξη όλων | Σύμπτυξη όλων

Σε αυτήν τη σελίδα

Περίληψη

Θέλετε να καλέσετε ένα στοιχείο ελέγχου χρήστη των Windows από μια ιστοσελίδα. Για να καλέσετε ένα στοιχείο ελέγχου χρήστη των Windows που μπορεί να έχει πρόσβαση ασφαλείς πόρους και που είναι ενσωματωμένο ως συγκρότηση που έχει ισχυρό όνομα, θα πρέπει να επισημάνετε τη συγκρότηση του στοιχείου ελέγχου χρήστη των Windows με τοAllowPartiallyTrustedχαρακτηριστικό συγκρότησης. Πρέπει να συμπεριλάβετε μια κλήση προς τονΔιεκδίκησηςμέθοδος για να επιτρέψετε στο στοιχείο ελέγχου χρήστη των Windows για να αποκτήσετε πρόσβαση στον πόρο ασφαλή.

ΕΙΣΑΓΩΓΗ

Αυτό το άρθρο βήμα προς βήμα περιγράφει τον τρόπο κλήσης των Windows έλεγχο του χρήστη από μια ιστοσελίδα. Το στοιχείο ελέγχου χρήστη των Windows που περιγράφονται σε αυτό το άρθρο δημιουργήθηκε ως μια συγκρότηση που έχει ισχυρό όνομα. Το δείγμα σε αυτό το άρθρο περιγράφει τον τρόπο χρήσης τουAllowPartiallyTrustedCallersτο χαρακτηριστικό της συγκρότησης, έτσι ώστε να είναι δυνατή η πρόσβαση μιας συγκρότησης που έχει ισχυρό όνομα από μια ιστοσελίδα. Το δείγμα στο άρθρο περιγράφει επίσης τον τρόπο χρήσης τουΔιεκδίκησηςΗ μέθοδος.

Δημιουργία ενός ζεύγους κλειδιών που έχει ισχυρό όνομα

Ένα ζεύγος κλειδιών που έχει ισχυρό όνομα χρησιμοποιείται για την υπογραφή της συγκρότησης για ένα στοιχείο ελέγχου χρήστη που έχει ισχυρό όνομα. Το ισχυρό όνομα χρησιμοποιείται όταν δημιουργείτε μια ομάδα κώδικα που σας παρέχει το δικαίωμα χρήσης της συγκρότησης από μερικώς αξιόπιστο κώδικα.
  1. Ανοίξτε μια γραμμή εντολών του Visual Studio.

    Στο Microsoft Visual Studio .NET 2002, επιλέξτεStart, τοποθετήστε το δείκτηΠρογράμματα (Programs), τοποθετήστε το δείκτηMicrosoft Visual Studio .NET, τοποθετήστε το δείκτηΤο Visual Studio .NET Εργαλεία, και στη συνέχεια κάντε κλικ στο κουμπίΤο Visual Studio .NET εντολών. Το Visual Studio .NET εντολών παράθυρο.

    Στο Microsoft Visual Studio .NET 2003, κάντε κλικ στο κουμπίStart, τοποθετήστε το δείκτηΠρογράμματα (Programs), τοποθετήστε το δείκτηMicrosoft Visual Studio .NET 2003, τοποθετήστε το δείκτηΤο οπτικό Studio .NET Εργαλεία, και στη συνέχεια κάντε κλικ στο κουμπίΤο Visual Studio .NET 2003 εντολών. Εμφανίζεται το παράθυρο του Visual Studio .NET 2003 εντολών.

    Στο Visual Studio 2005, κάντε κλικ στο κουμπίStart, τοποθετήστε το δείκτηΠρογράμματα (Programs), τοποθετήστε το δείκτηMicrosoft Visual Studio 2005, τοποθετήστε το δείκτηΤο Visual Studio 2005 Tools, και στη συνέχεια κάντε κλικ στο κουμπίΤο Visual Studio 2005 εντολών. Εμφανίζεται το παράθυρο του Visual Studio 2005 μια γραμμή εντολών.

    Στο Visual Studio 2008, κάντε κλικ στο κουμπίStart, τοποθετήστε το δείκτηΠρογράμματα (Programs), τοποθετήστε το δείκτηMicrosoft Visual Studio 2008, τοποθετήστε το δείκτηΤο Visual Studio 2008 Εργαλεία, και στη συνέχεια κάντε κλικ στο κουμπίΤο Visual Studio 2008 εντολών. Εμφανίζεται το παράθυρο γραμμή εντολών 2008Command Visual Studio.
  2. Πληκτρολογήστε τα ακόλουθα στη γραμμή εντολών και μετά πιέστε το πλήκτρο ENTER:
    sn c:\snKey.snk -k

Δημιουργία ενός στοιχείου ελέγχου χρήστη των Windows, χρησιμοποιώντας το Microsoft Visual C# .NET, Microsoft Visual C# 2005 ή νεότερη έκδοση

ΠΡΟΣΟΧΗΑυτή η λύση ενδέχεται να κάνουν τον υπολογιστή σας ή το δίκτυο πιο ευάλωτα σε επιθέσεις από κακόβουλους χρήστες ή επιβλαβές λογισμικό, όπως οι ιοί. Αυτός ο εναλλακτικός τρόπος αντιμετώπισης δεν συνιστάται, αλλά παρέχονται οι σχετικές πληροφορίες, ώστε να έχετε τη δυνατότητα να τον εφαρμόσετε κατά την κρίση σας. Χρησιμοποιήστε αυτόν τον εναλλακτικό τρόπο αντιμετώπισης με δική σας ευθύνη.

Αυτό το στοιχείο ελέγχου χρήστη επιδεικνύει τον τρόπο χρήσης τουAllowPartiallyTrustedCallersχαρακτηριστικό συγκρότησης. Μια συγκρότηση με ισχυρό όνομα μπορεί να κληθεί μόνο από μια πλήρως αξιόπιστη καλών, εκτός εάν χρησιμοποιεί τη συγκρότηση τουAllowPartiallyTrustedCallersΧαρακτηριστικό. Το δείγμα για το στοιχείο ελέγχου χρήστη δείχνει επίσης τον τρόπο χρήσης τουΔιεκδίκησηςΗ μέθοδος. Για ναΔιεκδίκησηςμέθοδος δηλώνει ότι ο κωδικός κλήσης να χρησιμοποιήσετε τον κωδικό που καλεί τοΔιεκδίκησηςμέθοδος για την πρόσβαση στον πόρο που προστατεύεται από ένα δικαίωμα ζήτηση. Ο κωδικός μπορεί να πρόσβαση στον πόρο, ακόμα και αν οι καλούντες που βρίσκονται ψηλότερα στη στοίβα δεν έχει εκχωρηθεί δικαίωμα πρόσβασης στον πόρο.

Αυτό το στοιχείο ελέγχου χρήστη σάς επιτρέπει να επιλέξετε ένα αρχείο χρησιμοποιώντας το παράθυρο διαλόγου ανοιχτό. The control then opens the text file in the list box. The user interface of this user control includes one text box and one list box. The text box displays the name of the file that is selected, and the list box shows the contents of the file that is selected.

To read the name of the selected file from theOpenFileDialogbox, and to read the file, the FileIOPermission permission type must be granted. The user control must have this permission granted through its code group. The Web page that calls the control does not have this permission.

To prevent a stack walk that is not successful because the caller does not have the required FileIOPermission permission type, use theΔιεκδίκησηςΗ μέθοδος. Σημειώστε ότι τοΔιεκδίκησηςmethod can open security vulnerabilities if theΔιεκδίκησηςmethod is used incorrectly or inappropriately. Therefore, you must use theΔιεκδίκησηςmethod with great caution. ΑRevertAssertmethod must follow theΔιεκδίκησηςmethod as soon as the file operation is completed.

ΣΗΜΕΙΩΣΗTo make sure that the contents of the file appear correctly in the list box, use this user control to select only text files.
  1. Start Microsoft Visual Studio .NET, Microsoft Visual Studio 2005, or a later version of Visual Studio.
  2. Στο διακομιστήFILEμενού, σημείοΝέα, και στη συνέχεια κάντε κλικ στο κουμπίΤο έργο. Για ναΝέο έργοεμφανίζεται το παράθυρο διαλόγου.
  3. underΤύποι έργουΚάντε κλικΤο οπτικό C# έργα.

    ΣΗΜΕΙΩΣΗIn Visual Studio, clickΤο Visual C#underΤύποι έργου.
  4. underΠρότυπαΚάντε κλικWindows Control Library.
  5. ΣτοNAMEπληκτρολογήστεUserControl.
  6. Κάντε κλικOk.
  7. Στο παράθυρο του Solution Explorer, κάντε δεξιό κλικUserControl1.cs, και στη συνέχεια κάντε κλικ στο κουμπίΠροβολή κώδικα. The UserControl1.cs file appears.
  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, και στη συνέχεια κάντε κλικ στο κουμπίΠροβολή κώδικα. The AssemblyInfo.cs file appears.
  10. Locate the following code:
    [assembly: AssemblyVersion("1.0.*")]
    Replace this code with the following code:
    [assembly: AssemblyVersion("1.0.0.0")]
  11. Locate the following code:
    [assembly: AssemblyKeyFile("")]
    Replace this code with the following code:
    [assembly: AssemblyKeyFile("c:\\snKey.snk")]
  12. Στο διακομιστήΔημιουργίαμενού, κάντε κλικ στο κουμπίΔημιουργία λύσεων.

Create a code group to assign the permissions for the assembly

ΠΡΟΣΟΧΗThis workaround may make your computer or your network more vulnerable to attack by malicious users or by malicious software such as viruses. We do not recommend this workaround but are providing this information so that you can implement this workaround at your own discretion. Use this workaround at your own risk.

A code group determines whether an assembly matches administrator-defined criteria that is referred to as a membership condition. If the assembly matches, the code group grants the assembly a set of permissions that has been associated with that code group.

To create a code group:
  1. Κάντε κλικStart, τοποθετήστε το δείκτηρυθμίσεις, και στη συνέχεια κάντε κλικ στο κουμπίΟ πίνακας ελέγχου. Για ναΟ πίνακας ελέγχουwindow appears.
  2. Διπλό κλικΕργαλεία διαχείρισης. Για ναΕργαλεία διαχείρισηςεμφανίζεται το παράθυρο.
  3. Στο Microsoft Visual Studio .NET 2002, κάντε διπλό κλικΡύθμιση παραμέτρων του Microsoft .NET framework. Για να.NET Ρύθμιση παραμέτρων frameworkεμφανίζεται το παράθυρο.

    Για το Microsoft Visual Studio .NET 2003, διπλό κλικMicrosoft .NET framework 1.1 ρύθμισης παραμέτρων. Για ναΡύθμιση παραμέτρων του .NET 1.1εμφανίζεται το παράθυρο.

    Στο Microsoft Visual Studio 2005 ή σε νεότερες εκδόσεις, κάντε διπλό κλικΡύθμιση παραμέτρων του Microsoft .NET framework 2.0. Για να.NET Ρύθμιση παραμέτρων framework 2.0window appears.
  4. Στο αριστερό τμήμα παραθύρου, αναπτύξτε το στοιχείοRuntime Security PolicyexpandΥπολογιστήςκαι, στη συνέχεια, αναπτύξτε το στοιχείοΚωδικός ομάδων.
  5. Κάντε δεξιό κλικ στο στοιχείοAll_Code, και στη συνέχεια κάντε κλικ στο κουμπίΝέα. The Create Code Group wizard appears.
  6. Βεβαιωθείτε ότι έχετεΔημιουργία νέας ομάδας κώδικαis selected, typeMyUserControlCodeGroupΣτοNAMEπλαίσιο και στη συνέχεια κάντε κλικΕπόμενο. Για ναChoose a condition typeεμφανίζεται η σελίδα.
  7. ΣτοΕπιλέξτε τον τύπο της συνθήκης για τη συγκεκριμένη ομάδα κώδικαλίστα, κάντε κλικ στο κουμπίStrong Name.
  8. Κάντε κλικΕισαγωγή. Για ναImport Strong Name From Assemblyεμφανίζεται το παράθυρο διαλόγου.
  9. Locate the UserControl.dll file that you created in the "Create a Windows user control by using Microsoft Visual C# .NET, Microsoft Visual C# 2005, or a later version" section, and then clickOpen.
  10. Κάντε κλικΕπόμενο. Για ναAssign a Permission Set to the Code Groupεμφανίζεται η σελίδα.
  11. Κάντε κλικUse existing permission setΕπιλογήFullTrustfrom the list, and then clickΕπόμενο. Για ναCompleting the Wizardεμφανίζεται η σελίδα.
  12. Κάντε κλικΦινλανδικάto close the Create Code Group wizard.

Create an HTML file to call the user control

After you create a code group to assign the permissions for the assembly, you must create an HTML file to call the user control from the browser, and you must set up the environment to make sure that the user control is called successfully.
  1. Κάντε κλικStartΚάντε κλικΕκτέλεσηTYPEΣημειωματάριο (Notepad), και στη συνέχεια κάντε κλικ στο κουμπίOk.
  2. In Notepad, paste the following code:
    <OBJECT id="MyWinControl1" height="200" width="200" classid="http:UserControl.dll#UserControl.UserControl1" VIEWASTEXT>
        
    </OBJECT> 
  3. In the root folder of Microsoft Internet Information Services (IIS), save the file as CallUserControl.htm.
  4. Copy the UserControl.dll file that you created in the "Create a Windows user control by using Microsoft Visual C# .NET, Microsoft Visual C# 2005, or a later version" section to the IIS root folder.
  5. Open Microsoft Internet Explorer.
  6. ΣτοAddressπληκτρολογήστεhttp://localhost/CallUserControl.htmκαι κατόπιν πατήστε το πλήκτρο ENTER. Για ναOpenεμφανίζεται το παράθυρο διαλόγου.
  7. Locate any text file, and then clickOpen. The text of the file appears in theΠλαίσιο λίσταςcontrol on the browser.

Αναφορές

Για περισσότερες πληροφορίες, επισκεφθείτε τις ακόλουθες τοποθεσίες Web Microsoft Developer Network (MSDN):
Configuring code groups using the .NET Framework Configuration tool
http://msdn2.microsoft.com/en-us/library/eb8xw74a(vs.71).aspx

CodeAccessPermission.Assert method
http://msdn2.microsoft.com/en-us/library/system.security.codeaccesspermission.assert(vs.71).aspx

.NET Framework assemblies and the AllowPartiallyTrustedCallers attribute
http://msdn2.microsoft.com/en-us/library/aa302328.aspx

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

Assembly security considerations
http://msdn2.microsoft.com/en-us/library/ab4eace3(vs.71).aspx

Security briefs: Strong names and security in the .NET Framework
http://msdn2.microsoft.com/en-us/library/aa302416.aspx

Ιδιότητες

Αναγν. άρθρου: 839300 - Τελευταία αναθεώρηση: Πέμπτη, 23 Δεκεμβρίου 2010 - Αναθεώρηση: 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
Λέξεις-κλειδιά: 
kbhowtomaster kbhowto kblistbox kbfileio kbdll kbcontrol kbweb kbuser kbsecurity kbpolicy kbopenfile kbmt KB839300 KbMtel
Μηχανικά μεταφρασμένο
ΣΗΜΑΝΤΙΚΟ: Αυτό το άρθρο είναι προϊόν λογισμικού μηχανικής μετάφρασης της 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