2012-04-07 5 views
2

In meiner Anwendung habe ich einige Speichermethoden, die Daten auf der Festplatte des Benutzers speichern. Wie kann es möglich sein, zu verhindern, dass der Benutzer Zugriff erhält, Dateien ändert oder löscht, sobald die Anwendung noch auf diese Dateien zugreifen, sie ändern und löschen kann?Führen Sie eine Anwendung als Administrator mit vordefiniertem Benutzernamen und Passwort

Die mögliche Lösung besteht darin, die Anwendung als Administrator für einen eingeschränkten Benutzer auszuführen, der keinen Zugriff auf den Sicherungsordner, jedoch mit einem vordefinierten Benutzernamen und Kennwort des Systemadministrators hat, der in der Anwendung gespeichert ist.

Ich habe andere Themen gelesen, um mit UAC, Application Manifest zu arbeiten.

Wie ich in Titel erwähnt Ist es möglich, ein Programm als Administrator ohne Benutzerinteraktion auszuführen?

EDIT 1: Ich bin auf der Suche nach einer Lösung, die die Fähigkeiten von ACLs haben funktioniert

+0

Können Sie erklären, warum Sie dies tun möchten? Ich frage, weil es darauf ankommt, ob Sie den Zugriff des Benutzers verhindern oder den Zugriff anderer vom Benutzer betriebener Programme verhindern wollen. Wenn der erste, gib jetzt einfach auf, es wird nicht funktionieren. Wenn Letzteres möglich ist, ist es ein Sicherheitsrisiko, es sei denn, Sie sind sehr vorsichtig damit, wie Sie vorgehen. – hvd

+0

Die PCs sind so aufgebaut, dass sie für mein Programm funktionieren und es gibt kein anderes Programm, daher möchte ich den Zugriff durch den Benutzer verhindern. – mammadalius

+0

In diesem Fall, wenn der Benutzer sowieso keine anderen Programme ausführen soll, scheint es einfacher zu sein, den Zugriff auf andere Programme zu verhindern. – hvd

Antwort

0

@HarryJohnston sagte in den Kommentaren:

„zu tun, was Sie fragen für eine Launcher-Anwendung schreiben, die CreateProcessWithLogonW verwendet (mit einem bekannten Admin-Benutzername und Passwort) die reale Anwendung starten gewarnt werden, dass. Ein kompetenter Benutzer wird in der Lage sein, die Administrator-Anmeldedaten zu extrahieren und sich als Administrator anzumelden. Bens Antwort (eine geteilte Anwendung) ist der richtige Ansatz. "

Und es ist meine ausgewählte Antwort.

+1

@HarryJohnston ist richtig, Sie sollten eine geteilte Anwendung verwenden. Wenn Sie dies tun, haben Sie dem Benutzer einen unbeaufsichtigten administrativen Zugriff gewährt. Wenn Ihre Anwendung z. B. ein Dialogfeld "Datei öffnen" oder "Datei speichern" enthält, ist es einfach, zu CMD.EXE zu navigieren, mit der rechten Maustaste zu klicken und "Ausführen" auszuwählen. Dann hat der Benutzer eine Eingabeaufforderung mit Administratorberechtigungen. *** Machen Sie es zumindest zu einem speziell angelegten Benutzerkonto, z. MYAPP_USR kein Administratorkonto ***. – Ben

4

Ich nehme an, Sie untersucht auf allen Versionen von Windows (XP, Vista und Seven) und Sie können sie nicht Ihre treffen zu lassen braucht. Zum Beispiel können Sie eine ACL festlegen, die es jedem Benutzer erlaubt, eine Datei zu erstellen. Jeder Benutzer kann eine von ihnen erstellte Datei ändern oder löschen, aber nicht die Dateien anderer Benutzer ändern oder löschen.


Der richtige Weg, um dieses Problem zu lösen, ist die applicaton in zwei Teile geteilt zu haben. Einer läuft als Windows-Dienst, DCOM-Server mit aktivierter Konfiguration als konfigurierter Benutzer oder anderer erhöhter Prozess, der andere läuft als "dumb-old-user".

Wenn die Clientanwendung eine Aktion ausführen möchte, die eine Erhöhung erfordert, übergibt sie die Anforderung an die erhöhte Hälfte der Anwendung. Dies führt alle erforderlichen Sicherheitsüberprüfungen, Anwendungslogiküberprüfungen usw. durch und führt dann die Aktion aus.

Auf diese Weise können Sie verhindern, dass der Benutzer durch die Hintertür hereinkommt und Ihre Anwendungsdaten durcheinander bringt. Es hilft jedoch nicht, wenn sie die Daten durch die FRONT-Tür vermischen.

+0

Ihre erste Lösung mit ACL erfüllt meine Anforderungen nicht, da ein Windows-Benutzer sowohl mit meinem Programm als auch mit Windows arbeitet, also was auch immer in einer Rolle tun kann, in einem anderen. – mammadalius

+0

Für Ihre zweite Lösung könnten Sie eine Quelle oder einen Workaround angeben, mit dem Sie arbeiten können? – mammadalius

+0

@mammadalius, zuerst, haben Sie daran gedacht, nur den Ordner zu verstecken und dem Benutzer nicht zu sagen, wo es ist? Für die meisten Benutzer wird das der Trick sein. Bevor Sie überhaupt etwas unternehmen, warum wollen Sie das tun? – Ben

Verwandte Themen