Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Von Bedeutung
Dieser Inhalt gilt nur für .NET Framework, sofern nicht anders angegeben.
.NET Framework-Sicherheitseinstellungen können dazu führen, dass Ihre Anwendung in einer teilweise vertrauenswürdigen Umgebung anders ausgeführt wird als auf Ihrem lokalen Computer. .NET Framework schränkt den Zugriff auf solche kritischen lokalen Ressourcen wie dateisystem-, netzwerk- und nicht verwaltete APIs ein. Die Sicherheitseinstellungen wirken sich auf die Möglichkeit aus, die Microsoft Windows-API oder andere APIs aufzurufen, die nicht vom Sicherheitssystem überprüft werden können. Die Sicherheit wirkt sich auch auf andere Aspekte Ihrer Anwendung aus, einschließlich Datei- und Datenzugriff und Drucken. Weitere Informationen zum Datei- und Datenzugriff in einer teilweise vertrauenswürdigen Umgebung finden Sie unter "Sicherere Datei- und Datenzugriff" in Windows Forms. Weitere Informationen zum Drucken in einer teilweise vertrauenswürdigen Umgebung finden Sie unter "Sichereres Drucken in Windows Forms".
In den folgenden Abschnitten wird erläutert, wie Sie mit der Zwischenablage arbeiten, Fenstermanipulation ausführen und die Windows-API aus Anwendungen aufrufen, die in einer teilweise vertrauenswürdigen Umgebung ausgeführt werden.
Zwischenablagezugriff
Die UIPermission Klasse steuert den Zugriff auf die Zwischenablage, und der zugehörige UIPermissionClipboard Enumerationswert gibt die Zugriffsebene an. In der folgenden Tabelle sind die möglichen Berechtigungsstufen aufgeführt.
UIPermissionClipboard-Wert | BESCHREIBUNG |
---|---|
AllClipboard | Die Zwischenablage kann ohne Einschränkung verwendet werden. |
OwnClipboard | Die Zwischenablage kann mit einigen Einschränkungen verwendet werden. Die Möglichkeit zum Einfügen von Daten in die Zwischenablage (Kopieren oder Ausschneiden) ist uneingeschränkt möglich. Systeminterne Steuerelemente, die ein Einfügen akzeptieren, z. B. ein Textfeld, können Zwischenablagedaten akzeptieren, Benutzersteuerelemente können jedoch nicht programmgesteuert aus der Zwischenablage gelesen werden. |
NoClipboard | Die Zwischenablage kann nicht verwendet werden. |
Standardmäßig empfängt AllClipboard die Zone "Lokales Intranet" Zugriff, und die Internetzone erhält OwnClipboard Zugriff. Dies bedeutet, dass die Anwendung Daten in die Zwischenablage kopieren kann, aber die Anwendung kann nicht programmgesteuert in die Zwischenablage einfügen oder aus der Zwischenablage lesen. Diese Einschränkungen verhindern, dass Programme ohne vollständiges Vertrauen Inhalte lesen, die von einer anderen Anwendung in die Zwischenablage kopiert wurden. Wenn Ihre Anwendung vollständigen Zugriff auf die Zwischenablage erfordert, Sie aber nicht über die Berechtigungen verfügen, müssen Sie die Berechtigungen für Ihre Anwendung erhöhen. Weitere Informationen zum Erhöhen von Berechtigungen finden Sie unter "Allgemeine Sicherheitsrichtlinienverwaltung".
Fenstermanipulation
Die UIPermission Klasse steuert außerdem die Berechtigung zum Ausführen von Fenstermanipulation und anderen UI-bezogenen Aktionen, und der zugehörige UIPermissionWindow Enumerationswert gibt die Zugriffsebene an. In der folgenden Tabelle sind die möglichen Berechtigungsstufen aufgeführt.
Standardmäßig empfängt AllWindows die Zone "Lokales Intranet" Zugriff, und die Internetzone erhält SafeTopLevelWindows Zugriff. Dies bedeutet, dass die Anwendung in der Internetzone die meisten Fenster- und UI-Aktionen ausführen kann, aber die Darstellung des Fensters wird geändert. Das geänderte Fenster zeigt beim ersten Ausführen eine Sprechblasebenachrichtigung an, enthält geänderten Titelleistentext und erfordert eine Schaltfläche zum Schließen auf der Titelleiste. Die Sprechblasenbenachrichtigung und die Titelleiste weisen den Benutzer der Anwendung darauf hin, dass die Anwendung mit eingeschränkten Berechtigungen ausgeführt wird.
UIPermissionWindow-Wert | BESCHREIBUNG |
---|---|
AllWindows | Benutzer können alle Windows- und Benutzereingabeereignisse ohne Einschränkung verwenden. |
SafeTopLevelWindows | Benutzer können nur sicherere Fenster auf oberster Ebene und sicherere Unterfenster für die Zeichnung verwenden und nur Benutzereingabeereignisse für die Benutzeroberfläche innerhalb dieser Fenster der obersten Ebene und Unterfenster verwenden. Diese sichereren Fenster sind klar beschriftet und haben Minimale und maximale Größenbeschränkungen. Die Einschränkungen verhindern potenziell schädliche Spoofingangriffe, z. B. das Imitieren von Systemanmeldebildschirmen oder den Systemdesktop, und beschränkt den programmgesteuerten Zugriff auf übergeordnete Fenster, fokusbezogene APIs und die Verwendung des ToolTip Steuerelements, |
SafeSubWindows | Benutzer können nur sicherere Unterfenster für die Zeichnung verwenden und nur Benutzereingabeereignisse für die Benutzeroberfläche innerhalb dieses Unterfensters verwenden. Ein Steuerelement, das in einem Browser angezeigt wird, ist ein Beispiel für ein sichereres Unterfenster. |
NoWindows | Benutzer können keine Fenster- oder Benutzeroberflächenereignisse verwenden. Es kann keine Benutzeroberfläche verwendet werden. |
Jede von der UIPermissionWindow Enumeration identifizierte Berechtigungsstufe ermöglicht weniger Aktionen als die ebene darüber. Die folgenden Tabellen geben die Aktionen an, die durch die Werte SafeTopLevelWindows und SafeSubWindows eingeschränkt werden. Genaue Berechtigungen, die für jedes Mitglied erforderlich sind, finden Sie in der .NET Framework-Klassenbibliotheksdokumentation in der Referenz zu diesem Element.
Die SafeTopLevelWindows Berechtigung beschränkt die Aktionen, die in der folgenden Tabelle aufgeführt sind.
Komponente | Eingeschränkte Aktionen |
---|---|
Application | - Festlegen der SafeTopLevelCaptionFormat Eigenschaft. |
Control | – Abrufen der Parent Eigenschaft. - Festlegen der Region Eigenschaft.- Aufrufen der FindForm, Focus, FromChildHandle und FromHandle, PreProcessMessage, ReflectMessage, oder SetTopLevel Methode. – Aufrufen der GetChildAtPoint Methode, wenn das zurückgegebene Steuerelement kein untergeordnetes Element des aufrufenden Steuerelements ist. – Den Fokus innerhalb eines Containersteuerelements ändern. |
Cursor | - Festlegen der Clip Eigenschaft. - Aufrufen der Hide Methode. |
DataGrid | - Aufrufen der ProcessTabKey Methode. |
Form | – Abrufen der ActiveForm- oder MdiParent-Eigenschaft. - Festlegen der ControlBox, ShowInTaskbar oder TopMost Eigenschaft. - Festlegen der Opacity Eigenschaft unter 50%. - Die Eigenschaft WindowState wird programmgesteuert mit Minimized festgelegt. - Aufrufen der Activate Methode. - Verwendung der None, FixedToolWindow und SizableToolWindowFormBorderStyle Enumerationswerte. |
NotifyIcon | - Die Verwendung der NotifyIcon Komponente ist vollständig eingeschränkt. |
Der SafeSubWindows Wert schränkt die aktionen ein, die in der folgenden Tabelle aufgeführt sind, zusätzlich zu den einschränkungen, die durch den SafeTopLevelWindows Wert festgelegt wurden.
Komponente | Eingeschränkte Aktionen |
---|---|
CommonDialog | – Zeigt ein Dialogfeld an, das von der CommonDialog Klasse abgeleitet ist. |
Control | - Aufrufen der CreateGraphics Methode. - Festlegen der Cursor Eigenschaft. |
Cursor | - Festlegen der Current Eigenschaft. |
MessageBox | - Aufrufen der Show Methode. |
Hosten von Drittanbieter-Steuerelementen
Eine andere Art von Fenstermanipulation kann auftreten, wenn Ihre Formulare Steuerelemente von Drittanbietern hosten. Ein Drittanbieter-Steuerelement ist jedes benutzerdefinierte UserControl, das Sie nicht selbst entwickelt und kompiliert haben. Obwohl das Hostingszenario schwer auszunutzen ist, ist es theoretisch möglich, dass ein Drittanbietersteuerelement seine Renderingoberfläche erweitern kann, um den gesamten Bereich Ihres Formulars zu decken. Dieses Steuerelement könnte dann ein kritisches Dialogfeld nachahmen und Informationen wie Kombinationen aus Benutzername/Kennwort oder Bankkontonummern von Ihren Benutzern anfordern.
Um dieses potenzielle Risiko zu begrenzen, verwenden Sie Steuerelemente von Drittanbietern nur von Anbietern, die Sie vertrauen können. Wenn Sie Steuerelemente von Drittanbietern verwenden, die Sie aus einer nichtifizierbaren Quelle heruntergeladen haben, empfehlen wir, den Quellcode auf potenzielle Exploits zu überprüfen. Nachdem Sie überprüft haben, dass die Quelle nicht böswillig ist, sollten Sie die Assembly selbst kompilieren, um sicherzustellen, dass die Quelle der Assembly entspricht.
Windows-API-Aufrufe
Wenn für Ihr Anwendungsdesign ein Aufruf einer Funktion aus der Windows-API erforderlich ist, greifen Sie auf nicht verwalteten Code zu. In diesem Fall können die Aktionen des Codes für das Fenster oder Betriebssystem nicht bestimmt werden, wenn Sie mit Windows-API-Aufrufen oder -Werten arbeiten. Die SecurityPermission Klasse und der UnmanagedCode Wert der SecurityPermissionFlag Enumeration kontrollieren den Zugriff auf nicht verwalteten Code. Eine Anwendung kann nur dann auf nicht verwalteten Code zugreifen, wenn ihr die UnmanagedCode Berechtigung erteilt wird. Standardmäßig können nur lokal ausgeführte Anwendungen nicht verwalteten Code aufrufen.
Einige Windows Forms-Mitglieder bieten nicht verwalteten Zugriff, der die UnmanagedCode Berechtigung erfordert. In der folgenden Tabelle sind die Member im System.Windows.Forms Namespace aufgeführt, die die Berechtigung erfordern. Weitere Informationen zu den Berechtigungen, die für ein Mitglied erforderlich sind, finden Sie in der Dokumentation zur .NET Framework-Klassenbibliothek.
Komponente | Mitglied |
---|---|
Application |
-
AddMessageFilter Methode - CurrentInputLanguage Eigentum - Exit Methode- ExitThread Methode - ThreadException Ereignis |
CommonDialog |
-
HookProc Methode - OwnerWndProc\Methode - Reset Methode - RunDialog Methode |
Control |
-
CreateParams Methode - DefWndProc Methode - DestroyHandle Methode - WndProc Methode |
Help |
-
ShowHelp Methodik - ShowHelpIndex Methode |
NativeWindow | - NativeWindow Klasse |
Screen | - FromHandle Methode |
SendKeys |
-
Send Methode - SendWait Methode |
Wenn Ihre Anwendung nicht über die Berechtigung zum Aufrufen von nicht verwaltetem Code verfügt, muss Ihre Anwendung die Berechtigung anfordern UnmanagedCode , oder Sie müssen alternative Methoden zur Implementierung von Features in Betracht ziehen. In vielen Fällen bietet Windows Forms eine verwaltete Alternative zu Windows-API-Funktionen. Wenn keine alternativen Mittel vorhanden sind und die Anwendung auf nicht verwalteten Code zugreifen muss, müssen Sie die Berechtigungen für die Anwendung erhöhen.
Die Berechtigung zum Aufrufen von nicht verwalteten Code ermöglicht es einer Anwendung, die meisten Aktionen auszuführen. Daher sollte die Berechtigung zum Aufrufen von nicht verwaltetem Code nur für Anwendungen gewährt werden, die von einer vertrauenswürdigen Quelle stammen. Abhängig von der Anwendung kann der Teil der Anwendungsfunktionalität, der den Aufruf an nicht verwalteten Code ausführt, optional oder nur in der vollständigen Vertrauensumgebung aktiviert sein. Weitere Informationen zu gefährlichen Berechtigungen finden Sie unter "Gefährliche Berechtigungen und Richtlinienverwaltung". Weitere Informationen zum Erhöhen von Berechtigungen finden Sie unter "Allgemeine Sicherheitsrichtlinienverwaltung".
Siehe auch
.NET Desktop feedback