Softwareentwicklung in Visual Studio .NET ohne Administratorberechtigungen

Veröffentlicht: 24. Sep 2002 | Aktualisiert: 22. Jun 2004

Von Lars Bergstrom

Mitglieder der lokalen Gruppe Administratoren haben die Berechtigung, beliebige Aktionen auf einem Computer auszuführen. Dies stellt ein Risiko sowohl für den Benutzer dar, der Aktionen in dieser Umgebung durchführt, als auch für die entwickelte Software. In diesem Artikel wird erläutert, wie Sie produktiv Software entwickeln können, wenn Sie ohne Administratorberechtigungen angemeldet sind.

Auf dieser Seite

Einführung Einführung
Mitgliedschaft in Gruppen und Berechtigungen für das Anmeldekonto Mitgliedschaft in Gruppen und Berechtigungen für das Anmeldekonto
Durchführen von Verwaltungsaufgaben Durchführen von Verwaltungsaufgaben
Softwareentwicklung Softwareentwicklung
Schlussfolgerung Schlussfolgerung

Betrifft:

  • Microsoft Windows XP und die Microsoft Windows-Server-2003-Familie

  • Festplattenlaufwerke mit NTFS-Dateisystem

  • Microsoft Visual Studio .NET

Einführung

Sicherheit ist wichtig. Niemand wird dies bestreiten, und jeder verbringt viel Zeit damit, sich über Sicherheitsprobleme, Sicherheitsmängel und böswillige Benutzer Gedanken zu machen. Nur sehr wenige Menschen sind jedoch bereit, sich die Mühe zu machen, den wichtigsten Grund dafür, dass E-Mail-Viren und Cracks im Allgemeinen so gefährlich sind, zu beheben: Jeder Benutzer meldet sich als Mitglied einer lokalen Gruppe Administratoren an und kann mit diesen Berechtigungen die meisten Dienste ausführen.

Durch das Prinzip des Status mit den "geringsten Privilegien", d.h. Anmeldung mit den Berechtigungen, die mindestens zur Durchführung einer Aktion erforderlich sind, wird der Schaden im Falle eines Falles minimiert, gleichgültig, ob es sich um eine beschädigte Anlage in einer mit Outlook empfangenen E-Mail oder um einen Dienst mit einem Sicherheitsrisiko handelt. Wenn Sie Programme nach Möglichkeit ohne Administratorberechtigungen ausführen, gewährleisten Sie eine sicherere Umgebung.

Die aktuell erhältliche Software erfordert häufig erhöhte Berechtigungen, damit sie ordnungsgemäß ausgeführt werden kann. Wenn Sie dem entgegentreten möchten, müssen die Entwickler den ersten Schritt machen und dürfen Programme nicht mehr als Administratoren ausführen.

Wenn wir uns dann alle konsequent als Benutzer ohne Administratorberechtigungen anmelden und als solche Anwendungen entwickeln und testen, kann die so produzierte Software wahrscheinlich ohne künstliche Anforderungen erhöhter Berechtigungen ausgeführt werden. Solange die Entwickler die erstellte und gelieferte Software nicht entsprechend verbessern, können Benutzer diese auch nicht in einer sicheren Umgebung ausführen!

 

Mitgliedschaft in Gruppen und Berechtigungen für das Anmeldekonto

Aufgaben wie die globale Registrierung, die Installation neuer Softwareanwendungen und die Neukonfigurierung von Geräten erfordern Administratorberechtigungen. Wenn Ihr Computer nicht von einem Vollzeitadministrator verwaltet wird, benötigen Sie für die Erledigung dieser Aufgaben ein Administratorkonto.

Ab jetzt gehen wir davon aus, dass dieses Benutzerkonto den Namen Administrator erhält und sich auf dem lokalen Computer befindet (im Gegensatz zu einem Domänenkonto). Sie können den Benutzer jedoch auch root nennen, solange dieser Mitglied der Gruppe Administratoren des lokalen Computers ist. Außerdem wird vorausgesetzt, dass Sie in einer Windows-Domäne arbeiten und die Hauptanmeldung über ein Konto in dieser Domäne der Form DOMÄNE\Benutzername erfolgt. Dies ist jedoch nicht zwingend, und beide Konten können sich auch auf dem lokalen Computer befinden.

Ändern des Kontenstatus
Nachdem Sie bestätigt haben, dass Sie weiterhin Zugriff auf ein Administratorkonto haben, gehen Sie in den Benutzer-Manager, entfernen Sie Ihr Benutzerkonto aus der Gruppe Administratoren, und fügen Sie es anschließend der Gruppe Benutzer sowie beliebigen anderen geeigneten Gruppen mit weniger Berechtigungen hinzu. Wenn Sie Ihr Benutzerkonto der Gruppe Benutzer hinzufügen möchten, müssen Sie zunächst die Microsoft Management Console (MMC) und das Benutzerverwaltungs-Snap-In laden.

Anmerkung Bei den meisten Netzwerkinstallationen ist die Gruppe Domänen-Benutzer der Domäne bereits Mitglied der lokalen Gruppe Benutzer, sodass das Domänenkonto bereits Bestandteil der lokalen Gruppe Benutzer ist.

Verwenden der Microsoft Management Console

  • Klicken Sie mit der rechten Maustaste auf Arbeitsplatz, und wählen Sie Verwalten.

-oder-

  • Klicken Sie auf Start und auf Ausführen, und geben Sie dann lusrmgr.msc ein.

Sie können nun Ihr Konto der Gruppe Benutzer hinzufügen.

Hinzufügen des Kontos zu Gruppen mit weniger Berechtigungen

  1. Bestätigen Sie, dass das Konto, das in Zukunft Ihre Hauptanmeldung darstellt, kein Mitglied der Gruppe Hauptbenutzer ist.
    Die Gruppe Hauptbenutzer stimmt eigentlich mit der Gruppe Administratoren überein, da sie standardmäßig Schreibzugriff auf HKLM\Software insgesamt und das Verzeichnis mit den Programmdateien hat.

    • Wählen Sie im Knoten Lokale Benutzer und Gruppen den Ordner Gruppen aus.

    • Doppelklicken Sie auf die Gruppe Hauptbenutzer.

    • Wenn Ihr Konto oder die Gruppe mit Ihrem Konto im Listenfeld Mitglieder aufgeführt ist, wählen Sie diesen Eintrag aus.

    • Klicken Sie auf Entfernen.

  2. Fügen Sie das Konto der Gruppe Benutzer hinzu.

  3. Fügen Sie das Konto der Gruppe Debuggerbenutzer hinzu.

  4. Entfernen Sie das Konto aus der Gruppe Administratoren.

  5. Fügen Sie das Konto entsprechend der folgenden Tabelle einer anderen geeigneten Gruppe hinzu:

    Voraussetzung: Konto hinzufügen zu: Verwenden von Terminaldiensten für die Remoteverbindung zum Computer Gruppe Remotedesktopbenutzer Entwickeln und Debuggen lokaler Webanwendungen mit Windows Server 2003 Gruppe IIS_WPG

Anmerkung Wenn Sie lokale Webanwendungen mit Windows XP Professional entwickeln und debuggen, verwenden Sie zum Hinzufügen der Berechtigung Anmelden als Stapelverarbeitungsauftrag zu Ihrem Konto folgende Vorgehensweise.

Anmelden als Stapelverarbeitungsauftrag

  1. Klicken Sie auf Start und auf Ausführen, und geben Sie dann gpedit.msc ein.
    Der Gruppenrichtlinien-Editor wird geöffnet.

  2. Erweitern Sie den Knoten Computerkonfiguration, um die Knoten Windows-Einstellungen, Sicherheitseinstellungen, Lokale Richtlinien und Zuweisen von Benutzerrechten anzuzeigen.

  3. Fügen Sie das auf DOMÄNE\Benutzername beschränkte Konto der Gruppe Anmelden als Stapelverarbeitungsauftrag hinzu.

  4. Melden Sie sich ab und als dieser Benutzer erneut an, damit die Änderungen wirksam werden.

Sicherstellen des Zugriffs auf Dateien und Freigaben
Während Sie als Mitglied einer lokalen Gruppe Administratoren angemeldet waren, haben Sie möglicherweise Verzeichnisse für die persönliche Verwendung erstellt. Unter Umständen haben Sie auch Netzwerkfreigaben erstellt, auf die Sie mit dem Benutzerkonto zugreifen möchten. Diese Netzwerkfreigaben wurden jedoch so erstellt, dass nur die lokale Gruppe Administratoren Zugriff erhält. Sie müssen sicherstellen, dass die auf der lokalen Festplatte außerhalb des Profilverzeichnisses erstellten Verzeichnisse weiterhin für Sie verfügbar sind und der Zugriff mit Ihrem Benutzerkonto möglich ist.

So überprüfen Sie die Besitzrechte einer privaten Datei oder eines privaten Verzeichnisses

  1. Klicken Sie mit der rechten Maustaste auf die Datei oder den Ordner, und wählen Sie Eigenschaften aus.

  2. Wählen Sie auf der Registerkarte Sicherheit die Option Erweitert.

  3. Stellen Sie auf der Registerkarte Besitzer sicher, dass Ihr Benutzerkonto aufgeführt ist. Ist dies nicht der Fall, übernehmen Sie die Besitzrechte.

So überprüfen Sie den Zugriff auf Dateifreigaben

  1. Klicken Sie mit der rechten Maustaste auf Arbeitsplatz, und wählen Sie Verwalten.

  2. Erweitern Sie den Knoten Freigegebene Ordner und anschließend den Knoten Freigaben.

  3. Klicken Sie für jede von Benutzern erstellte Freigabe zur Überprüfung des Zugriffs mit der rechten Maustaste auf die Freigabe, und wählen Sie Eigenschaften aus.

  4. Die Registerkarten Freigabeberechtigungen und Sicherheit entsprechen jeweils dem Zugriff auf die Freigabe und den zugrunde liegenden Dateisystemberechtigungen. Das Benutzerkonto muss über beide Listen Zugriff haben, um sämtliche Vorgänge in der Freigabe durchführen zu können.

Wenn Sie keinen Zugriff haben, fügen Sie Ihr Benutzerkonto an beiden Stellen hinzu.

 

Durchführen von Verwaltungsaufgaben

Bei der Anmeldung wird Ihnen auffallen, dass viele der UI-Komponenten nicht mehr funktionieren. Wenn Sie beispielsweise auf die Uhr in der Taskleiste doppelklicken, wird der Kalender nicht mehr angezeigt, da mit dem Kalender das Datum geändert werden kann und diese Funktion nur für Benutzer mit erhöhten Berechtigungen verfügbar ist.

Ausführen einer Anwendung als anderer Benutzer
Windows XP enthält Funktionen, mit denen Sie problemlos eine Anwendung als anderer Benutzer ausführen können, ohne sich abzumelden und als dieser Benutzer erneut anzumelden. Beachten Sie jedoch, dass diese Anwendungen beendet werden, wenn Sie die primäre interaktive Anmeldesitzung beenden. Hierbei können Sie auf drei verschiedene Arten vorgehen.

Ausführen einer Verknüpfung mit anderen Anmeldeinformationen

  1. Klicken Sie mit der rechten Maustaste auf eine Verknüpfung.
    Das Menü Eigenschaften wird angezeigt.

  2. Wählen Sie Ausführen als.
    Dadurch können Sie einen anderen Benutzernamen und ein anderes Kennwort zum Ausführen der Anwendung angeben.

Wenn Sie eine bestimmte Anwendung immer als anderer Benutzer ausführen möchten, können Sie festlegen, dass Sie von Windows automatisch dazu aufgefordert werden.

Ausführen einer Anwendungsbefehlszeile mit anderen Anmeldeinformationen

  • Klicken Sie auf Start und auf Ausführen, und geben Sie dann runas /user:Administrator program.exe ein.

- oder -

  • Geben Sie im Befehlsshellfenster runas /user:Administrator program.exe ein.

Von Runas.exe werden Sie zur Eingabe eines Kennwortes aufgefordert. Anschließend wird jede Befehlszeile ausgeführt, die Sie in eine neue Anmeldesitzung übernommen haben. Diese Vorgehensweise eignet sich zum Ausführen von Programmen wie regedit oder iexplore oder einfach nur zum Öffnen eines neuen Befehlsfensters, in dem sämtliche untergeordnete Prozesse ebenfalls als dieser Benutzer ausgeführt werden. Da es sich um einen neuen Anmeldevorgang handelt, werden keine Handles und Umgebungsvariablen übernommen. Auch das aktuelle Arbeitsverzeichnis wird nicht vom Aufrufpunkt übernommen. Wenn Sie Programme ausführen möchten, die sich nicht im Pfad des Benutzers befinden, müssen Sie den vollständigen Pfad angeben.

Automatische Aufforderung zur Eingabe eines anderen Benutzernamens

  1. In Windows XP und neueren Versionen kann der Benutzer die Eigenschaften von Verknüpfungen so ändern, dass der Benutzer bei jeder Aktivierung einer solchen Verknüpfung aufgefordert wird, einen anderen Benutzernamen und ein anderes Kennwort einzugeben.

  2. Klicken Sie mit der rechten Maustaste auf die Verknüpfung, und wählen Sie Eigenschaften.

  3. Wählen Sie auf der Registerkarte Verknüpfung die Option Erweitert.

  4. Wählen Sie Unter anderen Anmeldeinformationen ausführen.

Ausführen spezialisierter Verwaltungsprogramme unter anderen Anmeldeinformationen
Als Nächstes stellt sich folgende logische Frage: Wie führen Sie die Programme aus, die normalerweise über die Systemsteuerung gestartet werden? Klicken Sie mit der rechten Maustaste auf Arbeitsplatz und wählen dann Verwalten aus, oder verwenden Sie andere UI-Komponenten, die nicht über intuitive Verknüpfungen oder offensichtlich äquivalente Befehlszeilen verfügen?

Glücklicherweise stehen alle Verwaltungsprogramme entweder durch Ausführen der Applets der Systemsteuerung oder direkt über die Microsoft Management Console (MMC) zur Verfügung. In der folgenden Tabelle sind die gebräuchlichen Verwaltungsprogramme aufgeführt (Applets der Systemsteuerung und Dateien der Microsoft Management Console). Außerdem wird angegeben, wie sie gestartet werden können (entweder über eine Eingabeaufforderung oder durch direktes Starten der Anwendungen control.exe oder mmc.exe mit dem Befehl RunAs).

Diese Programme sind alle im Windows-Ordner System32 gespeichert, einige davon stehen jedoch ausschließlich entweder in der Windows-Server-2003-Familie oder in Windows XP zur Verfügung. Diese Einträge sind in der nachstehenden Tabelle markiert.

Verwaltungsaktion

Applet der Systemsteuerung

Eingabehilfen

access.cpl

802.11 Monitor

apgui.cpl

Software

appwiz.cpl

Konsole

console.cpl 1

Anzeige

DESK.cpl

SCSI, PCMCIA und Bandgeräte

DEVAPPS.cpl 1

Hardware-Assistent

hdwwiz.cpl

Internet

inetcpl.cpl

Regionale Einstellungen

INTL.cpl

Gamecontroller

joy.cpl

Maus, Schriftarten, Tastatur, Drucker

main.cpl

Multimedia und Sounds

MMSYS.cpl

Modems

MODEM.cpl 1

Netzwerk

ncpa.cpl

Anmeldeverwaltung für XP

nusrmgr.cpl (XP)

ODBC

odbccp32.cpl

Energieoptionen

powercfg.cpl

Anschlüsse

PORTS.cpl 1

Geräte, Dienste, Server

srvmgr.cpl 1

System

SYSDM.cpl

Telefonie

telephon.cpl

Datum/Uhrzeit

TIMEDATE.cpl

USV

ups.cpl 1

1 Verwendet die Windows-Server-2003-Familie als Betriebssystem

Verwaltungsaktion

Datei der Microsoft Management Console

Aktuelle Benutzerzertifikate

certmgr.msc

Zertifizierungsstelle

certsrv.msc 1

Zertifikatsvorlagen

certtmpl.msc 1

Indexdienst

ciadv.msc

Computerverwaltung

compmgmt.msc

Gruppenrichtlinien-Editor

dcpol.msc 1

Geräte-Manager

devmgmt.msc

Defragmentierung

dfrg.msc

Verteiltes Dateisystem

dfsgui.msc 1

Datenträgerverwaltung

diskmgmt.msc

Active Directory-Domänen und -Vertrauensstellungen

domain.msc 1

Sicherheitseinstellungen der Standarddomäne

dompol.msc 1

Active Directory-Benutzer und -Computer

dsa.msc 1

Active Directory-Sites und -Dienste

dssite.msc 1

Ereignisanzeige

eventvwr.msc

Dateiserver

filesvr.msc 1

Freigegebene Ordner

fsmgmt.msc

Gruppenrichtlinien-Editor

gpedit.msc

Internetauthentifizierungsdienst

ias.msc 1

Lokale Benutzer und Gruppen

lusrmgr.msc

Wechselmedien

ntmsmgr.msc

Operatoranforderungen für Wechselmedien

ntmsoprq.msc

Leistungsbewertung

perfmon.msc

Routing und RAS

rrasmgmt.msc 1

Richtlinienergebnissatz

rsop.msc

Lokale Sicherheitseinstellungen

secpol.msc

Dienste

services.msc

Telefonie

tapimgmt.msc 1

Terminaldienstekonfiguration und -verbindungen

tscc.msc 1

Remotedesktops

tsmmc.msc 1

Windows-Verwaltungsinfrastruktur

wmimgmt.msc

1 Verwendet die Windows-Server-2003-Familie als Betriebssystem

Netzwerkanmeldeinformationen
Wenn ein Fenster oder eine Anmeldesitzung als Administrator geöffnet wurde, handelt es sich bei den standardmäßigen Netzwerkanmeldeinformationen nicht um die des üblicherweise für die Anmeldung verwendeten Domänenkontos. Da in den meisten Netzwerken wichtige Ressourcen wie beispielsweise Dateifreigaben nur für Domänenkonten zugänglich sind, müssen Sie alternative Netzwerkanmeldeinformationen einrichten.

Hierfür stehen zwei Möglichkeiten zur Verfügung. Sie können ein neues Befehlsfenster öffnen und anschließend alternative Standardanmeldeinformationen für die Verwendung über das Netzwerk einrichten. Eine andere Möglichkeit besteht darin, für einzelne Server oder Freigaben den Zugriff mit einem anderen Benutzernamen und Kennwort zuzulassen.

Wenn Sie eine Befehlseingabeaufforderung ausführen, kann es sinnvoll sein, die Umgebung zu ändern, um klar zu machen, dass es sich um ein Fenster mit Administratorberechtigungen handelt. Häufig wird eine der folgenden Methoden verwendet:

  • Legen Sie die Eingabeaufforderung für Befehle so fest, dass sie eindeutig ist, z.B. PROMPT ADMIN $P$G

  • Legen Sie für die Eingabeaufforderung eine andere Farbe fest, beispielsweise einen hellroten Hintergrund mit schwarzem Text. Verwenden Sie hierfür den Befehl COLOR c0

  • Legen Sie für die Titelleiste einen eindeutigen Text fest. Verwenden Sie beispielsweise den Befehl title Admin Window

Öffnen eines neuen Befehlsfensters mit alternativen Netzwerkanmeldeinformationen

  1. Öffnen Sie das Fenster mit dem Befehl runas /user:administrator "runas /netonly /user:DOMÄNE\Benutzername cmd.exe".

  2. Geben Sie im ersten angezeigten Befehlsfenster nach der Aufforderung das Administratorkennwort ein.

  3. Geben Sie im zweiten angezeigten Befehlsfenster das Kennwort für den alternativen Benutzernamen ein, dessen Anmeldeinformationen für den Zugriff auf Ressourcen über das Netzwerk verwendet werden sollen.

Öffnen eines neuen Befehlsfensters für den Zugriff auf einzelne Serverfreigaben

  1. Öffnen Sie mit dem Befehl runas /user:administrator cmd.exe ein neues Befehlsfenster.

  2. Verwenden Sie für jeden Netzwerkserver, für den alternative Anmeldeinformationen erforderlich sind, den Befehl net use /user:DOMÄNE\Benutzername \\server in diesem Shellfenster.

Andere Formen des Befehls net use ermöglichen entweder die Zuordnung eines Netzwerklaufwerks zu einem festen Buchstaben oder liefern die Domänenanmeldeinformationen für Anforderungen des Authentifizierungszugriffs von diesem Computer. In der folgenden Tabelle werden einige net use-Befehle aufgeführt. Nach Ausführung dieser Befehle können Anwendungen wie üblich über die Remotefreigaben installiert werden.

"net use"-Befehl

Aktion

net use

Auflisten von Verbindungen

net use * /persistent:no /user:DOMÄNE\Benutzername \\server\share

Öffnen einer Verbindung, die einem lokalen Laufwerkbuchstaben mit alternativen Anmeldeinformationen zugeordnet ist, jedoch keine erneute Verbindung zum Laufwerk bei der nächsten Anmeldung

net use /user:DOMÄNE\Benutzername \\server\share

Verbinden mit der Netzwerkfreigabe mit alternativen Anmeldeinformationen für Benutzer

Softwareinstallation
Die Installation von Software ohne Administratorberechtigungen kann kompliziert sein. Wenn Sie beispielsweise einen Installationsdatenträger einlegen, wird die Installation unter dem momentan angemeldeten Benutzer gestartet, der wahrscheinlich keine Berechtigung zum Installieren der Anwendung besitzt. So können Sie dieses Problem vermeiden:

  • Führen Sie das Installationsprogramm (üblicherweise setup.exe) mit dem Befehl RunAs aus.

- oder -

  • Verwenden Sie den Befehl runas /user:administrator "control appwiz.cpl".

Dadurch wird eine Instanz der Anwendung Software erstellt, die als Benutzer Administrator ausgeführt wird. Wählen Sie die Installation für alle Benutzer des Computers, wenn diese Option von der Anwendung angeboten wird. Andernfalls ist der Administrator unter Umständen die einzige Person, die die Anwendung nach der Installation ausführen kann.

ActiveX-Steuerelemente
Viele Websites, besonders die in Intranets von Unternehmen, erfordern häufig für die Installation der ActiveX-Steuerelemente Administratorzugriff und unterstützen keine Installation durch Benutzer mit eingeschränkten Berechtigungen. Die einfachste Möglichkeit, Internet Explorer als Administrator zu starten, ist die Folgende:

  1. Klicken Sie mit der rechten Maustaste auf das Symbol.
    Das Symbol kann sich in der Schnellstartleiste, auf dem Desktop oder im Startmenü befinden.

  2. Wählen Sie in der Liste Eigenschaften den Befehl Ausführen als, und führen Sie die Anwendung als Administrator aus.

Das Windows-Installer-Paket
Wenn es sich um ein Windows-Installer-Paket handelt (.MSI-Datei), ist die Anwendung MSIEXEC.exe bei der Installation oder Deinstallation von Anwendungen hilfreich.

  • Führen Sie zur Installation msiexec /I msifile.msi aus.
    Anmerkung Dieser Befehl wird von Windows ausgeführt, wenn Sie auf eine .MSI-Datei doppelklicken.

  • Führen Sie zur Deinstallation msiexec /x msifile.msi aus.
    Anmerkung Argumente für das Programm msiexec.exe befinden sich unter ms-help://MS.VSCC/MS.MSDNVS/msi/app_73eb.htm (in Englisch).

Ausführen von Programmen, die Administratorzugriff voraussetzen
Leider sind viele Programme nicht Windows-Logo-konform, und viele der konformen Programme sind scheinbar weniger konform als andere. Das Windows-Logo-Programm legt fest, dass eine Anwendung vernünftig unter einem Konto mit weniger Berechtigungen funktionieren muss, wenn dies möglich ist.

Gelegentlich benötigt ein Programm Schreibzugriff für Benutzerkonten auf das Installationsverzeichnis mit den Programmdateien oder sogar einen Schlüssel in HKLM\Software. Wenn Sie problemlos ermitteln können, für welche Verzeichnisse, Dateien oder Registrierungsschlüssel Zugriff erforderlich ist, können Sie diese so bearbeiten, dass das Programm ausgeführt werden kann. Bei der folgenden Vorgehensweise wird dieser Vorgang aufgezeigt.

Bearbeiten von Registrierungsrechten

  1. Öffnen Sie regedit als Administrator, indem Sie runas /user:Administrator regedit eingeben.

  2. Klicken Sie mit der rechten Maustaste auf den Registrierungsschlüssel, den Sie bearbeiten möchten.

  3. Wählen Sie Berechtigungen aus.

  4. Fügen Sie entweder den geeigneten Benutzer der Gruppe von Benutzern hinzu, die über Vollzugriff verfügen, oder gewähren Sie ihnen einen benutzerdefinierten Satz mit Zugriffsberechtigungen für diesen Schlüssel.

Bearbeiten von Dateisystemberechtigungen
Bei Dateien oder Verzeichnissen ist das Programm cacls.exe hilfreich für die erneute Festlegung von Berechtigungen über die Befehlszeile. Hilfe zur Verwendung von Cacls.exe erhalten Sie auf zwei verschiedene Arten:

  • In der Befehlszeile, indem Sie das Flag /? verwenden

  • In der Windows-Hilfe

Beispiel: Ausführen des Programms "cacls.exe" zum Hinzufügen von Berechtigungen für einen Benutzer zu einem Verzeichnis
Führen Sie cacls.exe mit den entsprechenden Flags aus, damit die Schreibberechtigung rekursiv gewährt wird

runas /user:Administrator "cacls.exe directory /t /e /g Domäne\Benutzername:w"

  • Spezifizieren Sie unter Windows Server 2003 den directory-Parameter vollständig mit einem nachstehenden Schrägstrich.

  • Unter Windows XP Professional müssen Sie möglicherweise die abschließenden Anführungszeichen wegen der Unterschiede zwischen Betriebssystemversionen im Programm cacls.exe entfernen. Überprüfen Sie die Ausgabe des Befehls runas.exe. Wenn diese Ausgabe ein zusätzliches Anführungszeichen (wie unten dargestellt) enthält, entfernen Sie die abschließenden Anführungszeichen aus obiger Befehlszeile.

    Es wird versucht, cacls.exe c:\foo\ /t /e /g Domäne\Benutzername:w" als Benutzer "MACHINE\Administrator" zu starten...

Als letzte Möglichkeit können Sie runas.exe ausführen, um das Programm als lokaler Benutzer Administrator zu starten. Gehen Sie hierbei jedoch vorsichtig vor, denn da das Programm offensichtlich nicht dafür geeignet ist, in einer Umgebung mit weniger Berechtigungen ausgeführt zu werden, können Sie nicht unbedingt darauf vertrauen, dass es in einer Umgebung mit erhöhten Berechtigungen fehlerfrei funktioniert. Leider wurden viele Programme nicht beim Ausführen unter einem anderen Benutzer als dem, der sie installiert hat, getestet, und noch viel weniger unter einem Konto mit weniger Berechtigungen.

Möglicherweise müssen Sie das Programm als lokaler Administrator ausführen, damit es problemlos läuft. Dabei handelt es sich immer noch um eine bessere Umgebung, als wenn Sie die gesamte Software ausführen und sich als Mitglied einer lokalen Gruppe Administratoren anmelden. Wenden Sie sich jedoch nach Möglichkeit an das Unternehmen, von dem die Software entwickelt wurde, und informieren Sie es über den Fehler, sodass dieser in der nächsten Version behoben werden kann. Endbenutzer können ihre Software nur dann in einer sichereren Anmeldungsumgebung ausführen und gleichzeitig so produktiv wie heute arbeiten, wenn jeder Entwickler die Software entsprechend korrigiert.

 

Softwareentwicklung

Visual Studio .NET ist Windows-Logo-konform, daher ist zu erwarten, dass es als Benutzer mit eingeschränkten Rechten ausgeführt werden kann. Die meisten Funktionen können auch mit eingeschränkten Berechtigungen problemlos ausgeführt werden, doch es gibt einige Aufgaben, die in diesem Modell geringfügig komplizierter sind, entweder aufgrund der Beschränkungen des Betriebssystems oder aufgrund der grundsätzlichen Art und Weise der durchzuführenden Aufgaben. In den folgenden Abschnitten finden Sie einfache Vorgehensweisen zum Umgang mit sämtlichen schwierigen Aufgaben in einem Entwicklungsprozess.

In zukünftigen Versionen der integrierten Entwicklungsumgebung (Integrated Development Environment, IDE) sind diese Funktionen hoffentlich in die Shell integriert und die Anforderungen nach Möglichkeit verringert. Wir arbeiten an zukünftigen Versionen sowohl des Betriebssystems als auch der Entwicklungsprogramme, um die Durchführung dieser Aktionen mit gleichwertigen Möglichkeiten zu vereinfachen, für die keine Administratorberechtigungen erforderlich sind.

Durchführen von Postbuild-Schritten (Registrierung)
Bei herkömmlichem Visual C++ heißt die Datei regsvr32.exe. Bei Visual Basic .NET und in der Visual C# .NET-Welt handelt es sich um die Registrierung von Assemblies für Interop. Unabhängig vom Projektsystem für die Umsetzung gibt es zahlreiche Programme, die Schreibzugriff auf HKLM\Software\Classes erfordern, um COM-Komponenten und Typbibliotheken zu registrieren. Wenn mit der Anwendung momentan Registrierungsschritte durchgeführt werden, für die Schreibzugriff auf geschützte Abschnitte der Registrierung erforderlich ist, müssen Sie zunächst feststellen, ob diese Schritte unbedingt erforderlich sind. Beachten Sie Folgendes:

  • Auf HKCU\Software\Classes kann von jedem Benutzer geschrieben werden. Die Anzeige in HKCR erfolgt genauso wie HKLM\Software\Classes, jedoch nur für den jeweiligen Benutzer.
    Anmerkung Weitere Informationen zur Zusammensetzung von HKEY_CLASSES_ROOT finden Sie unter ms-help://MS.VSCC/MS.MSDNVS/sysinfo/regapi_0htl.htm (in Englisch).

  • Verlassen Sie sich nicht darauf, dass regsvr32.exe als Verfahren zur Endbenutzerinstallation für herkömmliche COM-Komponenten ausreicht. Sie sollten stattdessen die Anwendungsregistrierung für jeden Benutzer ändern, da die DllRegisterServer-Methode nur zum Debuggen und für private Entwicklungszwecke verwendet werden darf. Wenn Sie Anwendungen für Endbenutzer bereitstellen, müssen Sie sämtliche Registrierungsanforderungen in den .MSI-Dateitabellen des Windows Installer festhalten, damit Probleme, beispielsweise mehrere Programme, die dieselben Registrierungsschlüssel verwenden und in verschiedenen Reihenfolgen installiert oder deinstalliert werden, behoben werden können.

Leider ist bei vielen Programmen und Betriebssystem-APIs nur eine Registrierung in HKLM\Software\Classes zulässig. Die Registrierung der Typbibliothek ist ein gutes Beispiel hierfür. In diesen Fällen bietet es sich an, entweder mit dem Befehl runas /user:administrator cmd.exe das Verzeichnis in das Ausgabeverzeichnis zu ändern und anschließend die Registrierungsschritte manuell durchzuführen oder die Abhängigkeit generell zu entfernen. Leider ist die vollständige Entfernung der Abhängigkeit bei der globalen Registrierung so kompliziert, dass darüber ein eigener Artikel verfasst werden müsste. Eine Alternative besteht darin, benutzerdefinierte Manifestdateien zu erstellen, um die Registrierungsschritte völlig zu umgehen, doch auch dieses Thema geht über diesen Artikel hinaus. Weitere Informationen dazu finden Sie unter ms-help://MS.VSCC/MS.MSDNVS/sbscs/sidebysideref_03ol.htm (in Englisch). Die einfachste Möglichkeit zur Umgehung der Beschränkungen der globalen Registrierung besteht darin, die Registrierungsschritte mit dem Administratorkonto durchzuführen.

In der folgenden Tabelle werden gebräuchliche Postbuild-Registrierungsaufgaben und die entsprechende Registrierung dargestellt. Führen Sie diese beim ersten Mal durch. Anschließend können Sie sie normalerweise wie gewohnt erstellen und ausführen. Denken Sie jedoch daran, dass Sie unter Umständen den jeweiligen Registrierungsschritt bei jedem Wechseln zwischen Debug- und Releasekonfiguration erneut durchführen müssen. Dies ist auch der Fall, wenn Sie Änderungen an der Anwendung vornehmen, die sich auf die registrierten Elemente auswirken.

Postbuild-Registrierungstyp

Registrierungsaktion

Registrierung für ausführbare COM-Dateien

output.exe /RegServer

Registrierung für COM-DLL

regsvr32 output.dll

.NET-Assemblyregistrierung für COM-Interoperabilität

regasm output.dll

Installation einer .NET-Assembly im globalen Assemblycache

gacutil /if output.dll

Installationsregistrierung für .NET-Dienste

regsvcs output.dll

Debuggen normaler Anwendungen
Wenn Sie sich nicht als Administrator, sondern als anderer Benutzer anmelden, steht eine Funktion nicht zur Verfügung: Unter Windows ist das Debuggen von Anwendungen, die unter einem anderen Benutzer ausgeführt werden, nur dann zulässig, wenn Sie die spezielle Benutzerberechtigung dafür haben (SeDebugPrivilege). Standardmäßig verfügen ausschließlich Mitglieder der Gruppe Administratoren über diese Berechtigung.

Sie können weiterhin Anwendungen debuggen, die Sie in der Entwicklungsumgebung gestartet haben oder die bereits unter einem anderen Benutzer als dem Administrator ausgeführt werden. Wenn Sie Dienste oder andere Programme debuggen müssen, die in anderen Sicherheitskontexten ausgeführt werden, müssen Sie sich entweder selbst die Betriebssystemberechtigung gewähren oder RunAs als lokaler Administratorbenutzer ausführen, um Visual Studio .NET zu starten. Wie Sie sehen, gibt es zahlreiche Methoden, Anwendungen als normaler Benutzer zu starten und dabei sowohl das Debuggen zu ermöglichen als auch sicherzustellen, dass die Anwendung in einer Umgebung mit eingeschränkten Berechtigungen fehlerfrei ausgeführt werden kann.

Systemeigene und verwaltete Anwendungen
Starten Sie nach Möglichkeit die Anwendung als Benutzer ohne Administratorberechtigungen, und alles funktioniert problemlos. Standardmäßig können Sie normale ausführbare Dateien im Menü Debuggen mit dem Befehl Start ausführen. Ebenso funktioniert das Anhängen (der Befehl An den Prozess anhängen im Menü Debuggen) an eine beliebige Anwendung, die Sie selbst auf dem Computer gestartet haben. Sie müssen ein Mitglied der Gruppe Debuggerbenutzer sein, damit Sie sich mit den standardmäßigen Visual Studio .NET-Mechanismen anhängen können. Wenn Sie Mitglied in dieser Gruppe sind, erhalten Sie dadurch noch keinen Zugriff zum Debuggen von Programmen anderer Benutzer, sondern haben einfach die Möglichkeit, den Dienst zu verwenden, mit dem der Debugger an den entsprechenden Prozess angehängt wird.

Remotecomputer (systemeigen/verwaltet)
Es gibt zwei akzeptable Möglichkeiten, Remotedebugging durchzuführen: über den Computer-Debug-Manager oder über msvcmon.exe. Der Computer-Debug-Manager ist ein Dienst, der Ihre Netzwerkanmeldeinformationen erkennt, Ihre Identität feststellt, überprüft, ob Sie Mitglied der Gruppe Debuggerbenutzer des Zielcomputers sind und anschließend gegebenenfalls die Verbindung zu Ihren eigenen Anwendungen ermöglicht. Der Computer-Debug-Manager stellt außerdem die einzige Möglichkeit dar, remote verwaltete Anwendungen, einschließlich Webanwendungen, zu debuggen.

Sie können keine Verbindung zu den Anwendungen anderer Benutzer auf Remotecomputern herstellen, nur weil Sie Mitglied der Gruppe Debuggerbenutzer sind. Für systemeigene, auf Remotecomputern ausgeführte Programme benötigen Sie auch auf dem Zielcomputer die Benutzerberechtigung SeDebugPrivilege. Für verwaltete Anwendungen auf Remotecomputern müssen Sie Mitglied der Gruppe Administratoren sein. Sie erhalten selbst mit der Betriebssystemberechtigung keinen Zugriff.

Als Alternative zum Debuggen systemeigener Anwendungen bietet das Programm msvcmon.exe die Möglichkeit, eine Verbindung zu verwalteten Anwendungen auf Remotecomputern über TCP/IP herzustellen. In diesem Fall werden die Anmeldeinformationen vom Debugging-Computer nicht auf dem Remotecomputer repliziert. Wenn beispielsweise msvcmon.exe auf dem Remotecomputer unter dem lokalen Administrator dieses Computers, jedoch mit dem Flag -anyuser gestartet wird, kann jeder Benutzer eine Verbindung zu dem Dienst herstellen, sich an beliebige systemeigene Anwendungen auf diesem Computer anhängen und diese debuggen, selbst wenn er ursprünglich nicht über die erforderlichen Berechtigungen verfügt hat.

Erstellen von Webanwendungen
Es gibt zwei Möglichkeiten zum Programmieren neuer Webanwendungen: Als erstes können Sie das Benutzerkonto, unter dem Sie angemeldet sind, der Gruppe VS-Entwickler hinzufügen. Dadurch erhält das Konto Schreibberechtigung im gesamten IIS-Webstammverzeichnis. Alternativ können Sie das Verzeichnis als dieser Benutzer erstellen und anschließend ein virtuelles Stammverzeichnis hinzufügen. In beiden Fällen können Sie nach dem Durchführen einer dieser Möglichkeiten die neue Anwendung im Visual Studio .NET-Dialogfeld zum Erstellen eines neuen Projekts als eingeschränkter Benutzer erstellen.

So fügen Sie ein virtuelles IIS-Stammverzeichnis hinzu

  1. Führen Sie die Management Console compmgmt.msc als Administratorbenutzer aus.

  2. Erweitern Sie den Knoten Dienste und Anwendungen, um die Knoten Internet-Informationsdienste und Websites anzuzeigen.

  3. Klicken Sie mit der rechten Maustaste auf den Knoten Standardwebsite. Wählen Sie Neu und dann Virtuelles Verzeichnis aus.

  4. Klicken Sie auf Weiter, geben Sie den Namen für das virtuelle Stammverzeichnis ein, und klicken Sie erneut auf Weiter.

  5. Geben Sie den anzuzeigenden Verzeichnisnamen ein, und klicken Sie auf Weiter.

  6. Lassen Sie die standardmäßigen Zugriffsberechtigungen unverändert, und klicken Sie auf Weiter.

  7. Klicken Sie auf Fertig stellen, um das virtuelle Stammverzeichnis einzurichten.

Debuggen von Webanwendungen
Für das Debuggen von Webanwendungen müssen zwei Bedingungen erfüllt werden: Sie führen ASP.NET als eingeschränktes Anmeldekonto aus und verfügen über Verzeichnisberechtigungen. In der folgenden Tabelle finden Sie eine Liste der Verzeichnisse, denen Sie Lese- oder Schreibzugriff hinzufügen müssen.

Verzeichnis

Im Verzeichnis und auf allen untergeordneten Ebenen erforderliche Berechtigungen

%WINDIR%\Temp

Lese- und Schreibzugriff

%INSTALLROOT%

Lesezugriff

%INSTALLROOT%\ASP.NET Temporäre Dateien

Lese- und Schreibzugriff

Anmerkung %INSTALLROOT% weist die Form D:\WINDOWS\Microsoft.NET\Framework\v1.0.3705 und %WINDIR% die Form D:\WINDOWS auf.

Standardmäßig können Sie mit einer eingeschränkten Benutzeranmeldung keine Webanwendungen debuggen, da der Benutzer, der den Debugger ausführt, keine Berechtigung zum Debuggen von Programmen anderer Benutzer (SeDebugPrivilege) aufweist. Vom Webserver wurde jedoch ASP.NET als NETWORK_SERVICE-Konto gestartet.

Wenn Sie bei dieser Anmeldung die Berechtigung SeDebugPrivilege gewähren möchten, müssen Sie das Konto ändern, unter dem ASP.NET ausgeführt wird. Bearbeiten Sie in Windows XP Professional machine.config wie nachstehend beschrieben, und geben Sie Ihren Benutzernamen und Ihr Kennwort im Klartext ein. Dies hat den möglichen Nachteil, dass alle ASP.NET-Anwendungen auf dem Computer unter Ihrem Benutzerkonto ausgeführt werden müssen. Dennoch stellt die Vorgehensweise die beste Methode für IIS 5 dar und ermöglicht das Debuggen und Erstellen von Webanwendungen, wie Sie es gewohnt sind.

Sicherheitshinweis Die Datei machine.config muss sich auf einem NTFS-Laufwerk befinden und eine restriktive ACL-Einstellung aufweisen. Andernfalls kann jeder Benutzer, der sich am Computer anmeldet, Ihr Kennwort sehen. Selbst wenn Sie diesen Hinweis beachten, können alle Benutzer in der Gruppe Administratoren das Kennwort unabhängig von der ACL-Einstellung lesen.

Ausführen von ASP.NET unter Windows XP Professional als anderer Benutzer
Bearbeiten Sie als Administrator die Attribute der Datei %INSTALLROOT%\Config\machine.config im processModel-Tag wie folgt:

Anmerkung%INSTALLROOT% hat die Form D:\WINDOWS\Microsoft.NET\Framework\v1.0.3705

Ausführen von ASP.NET unter Windows Server 2003 als anderer Benutzer
In Windows Server 2003 und IIS 6 gibt es ein neues Feature namens Anwendungspools. Jeder Pool kann so konfiguriert werden, dass er unter einem anderen Benutzer ausgeführt wird, vorausgesetzt, dass dieser Benutzer Mitglied in der Gruppe IIS_WPG ist. Virtuelle Stammverzeichnisse können einem Anwendungspool hinzugefügt werden, und der Debugger kann sich anschließend daran anhängen, wenn der Pool unter dem Benutzer ausgeführt wird, der den Debugger gestartet hat. Dieser Mechanismus bietet eine einfache Möglichkeit, eine alternative Ausführungsumgebung einzurichten, die Anmeldeinformationen der Benutzer optimal zu schützen und zusätzliche virtuelle Stammverzeichnisse festzulegen.

Hinzufügen und Konfigurieren eines Anwendungspools

  1. Führen Sie die Management Console compmgmt.msc als Administratorbenutzer aus.

  2. Erweitern Sie den Knoten Dienste und Anwendungen, um die Knoten Internet-Informationsdienste und Anwendungspools anzuzeigen.

  3. Klicken Sie mit der rechten Maustaste auf den Knoten Anwendungspools. Wählen Sie Neu und anschließend Anwendungspool aus.

  4. Geben Sie den Namen für den Anwendungspool ein, und klicken Sie auf OK.

  5. Klicken Sie mit der rechten Maustaste auf den neuen Anwendungspool, und wählen Sie Eigenschaften aus.

  6. Wählen Sie auf der Registerkarte Identität die Option Konfigurierbar aus.

    <processModel
                enable="TRUE"
                userName="DOMÄNE\Benutzername"
                password="MyPswd2"
                .
    / >
    
  7. Geben Sie in den entsprechenden Feldern den Benutzernamen und das Kennwort ein, mit denen Sie den Debugger ausführen möchten, und klicken Sie auf OK.

Anmerkung Dieses Konto muss Mitglied der Gruppe IIS_WPG sein und über die oben aufgeführten Zugriffsberechtigungen verfügen, um ASP.NET-Anwendungen ausführen zu können.

Festlegen eines virtuellen Stammverzeichnisses für die Ausführung in einem Anwendungspool

  1. Führen Sie die Management Console compmgmt.msc als Administratorbenutzer aus.

  2. Erweitern Sie den Knoten Dienste und Anwendungen, um die Knoten Internet-Informationsdienste, Websites und Standardwebsite anzuzeigen.

  3. Erweitern Sie den Knoten Standardwebsite, um alle verfügbaren virtuellen Stammverzeichnisse anzuzeigen.

  4. Klicken Sie mit der rechten Maustaste auf das zu konfigurierende virtuelle Stammverzeichnis, und wählen Sie Eigenschaften aus.

  5. Ändern Sie auf der Registerkarte Virtuelles Verzeichnis den Eintrag Anwendungspool, um den Anwendungspool auszuwählen, der mit der richtigen Benutzer-ID ausgeführt wird, und klicken Sie auf OK.

Installieren der Ausgabe von Weitergabeprojekten
Die Installation der Ausgabe eines Weitergabeprojekts weist dieselben Einschränkungen auf wie die Installation einer Anwendung über das Netzwerk, die bereits bei den Programmen RunAs.exe und MSIEXEC beschrieben wurden. Installieren Sie die Ausgabe als normale Anwendung für alle Benutzer. Andernfalls können Schwierigkeiten beim Starten oder Debuggen auftreten.

 

Schlussfolgerung

Der Preis für die Entwicklung sicherer Anwendungen und damit einer sicheren Arbeitsumgebung sind geringe Unannehmlichkeiten bei der Durchführung einer Aufgabe, die eine höhere Berechtigungsstufe erforderlich macht. Der Lohn dafür liegt jedoch in einer sicheren Arbeitsumgebung und sicheren Programmen. Daher gibt es keine Ausrede, nicht dafür zu sorgen.

Denken Sie daran: Je geringer die erforderlichen Berechtigungen für das Ausführen einer Anwendung, desto weniger Schaden kann entstehen, wenn sie beschädigt wird. Fakt ist, dass Sie Ihre Anwendung mit mindestens einem Sicherheitsmangel ausliefern werden. Es liegt nun an Ihnen, in welchem Ausmaß die Computer der Benutzer und das Image Ihres Unternehmens Schaden nehmen, wenn jemand diesen Mangel findet und ausnutzt.