Ich muss große Dateien herunterladen. Um die Übertragung zu beschleunigen, verwende ich mehrere Verbindungen pro Datei. Um die Festplattenfragmentierung zu reduzieren, gebe ich Windows nach der Erstellung die endgültige Größe der Datei an. Um Null Initialisierung zu vermeiden, wenn ich das erste Byte der letzten Verbindung schreibe, initialisiere ich die Datei als Müll mit SetFileValidData. Das Problem besteht darin, dass SetFileValidData die Berechtigung SE_MANAGE_VOLUME_NAME erfordert, die normalerweise nur Administratoren haben. Wie kann ich SE_MANAGE_VOLUME_NAME für nicht belebte Benutzer (Administratorbenutzer mit aktivierter Benutzerkontensteuerung) aktivieren?Wie gewähre ich unerlaubten Benutzern Windows-Rechte?
Antwort
Sie können nicht; Es gibt keine Möglichkeit, einem Prozess, der mit einem eingeschränkten Token ausgeführt wird, erhöhte Rechte zu geben.
Verwenden Sie möglicherweise einen Systemdienst, um die erhöhte Aufgabe auszuführen. Es gibt mindestens drei mögliche Ansätze:
Machen Sie die ganze Arbeit, einschließlich des Downloads, aus dem Dienst.
Laden Sie von der Anwendung herunter und verwenden Sie den gemeinsam genutzten Speicher, um dem Dienst die Daten zum Schreiben in die Datei bereitzustellen.
Lassen Sie den Dienst die Datei erstellen und erweitern, und versehen Sie die Anwendung mit einem schreibgeschützten Handle. (Es hat Zuschreibung nur sein, um sicherzustellen, dass die Anwendung nicht in das Lesen der potentiell sensible Daten dazu verleitet werden, die in der Datei belassen wurde, wenn Sie Null-Initialisierung umgangen.)
Beachten Sie, dass in all diesen Fällen Sie müssen auch vorsichtig sein, welche Berechtigungen Sie für die Datei festlegen.
Alternativ können Sie die Download-Streams je nach Protokoll anders organisieren. Anstatt dass jeder Datenstrom einen großen sequenziellen Teil der Daten abruft, so dass der letzte Datenstrom an das Ende der Datei geschrieben wird, muss jeder Datenstrom eine Reihe kleinerer zwischengespeister Datenblöcke abrufen, die Sie sequentiell in die Datei schreiben können.
(Dies könnte nicht möglich sein, wenn das Protokoll nur jede Verbindung ermöglicht einen sequentiellen Datenblock, wegen des zusätzlichen Aufwand für eine neue Verbindung für jeden Block zu holen.)
Warum unterscheidet sich SE_MANAGE_VOLUME_NAME von c: \ irgendwas? Ich kann Standardbenutzern Rechte für Dateien geben. –
Äpfel und Orangen. Privilegien sind nicht auf die gleiche Weise wie Zugriffsrechte implementiert, sie sind völlig unterschiedliche Dinge. –
Sie können zwar Standardbenutzern beliebige Berechtigungen zuweisen (über die lokale Sicherheitsrichtlinie), aber dies betrifft nicht die Administratoren, die den Prozess immer noch mit erhöhten Rechten ausführen müssen. In Ihrem Szenario müssten Sie UAC deaktivieren. Wohlgemerkt, wenn Sie den Standardbenutzern Administrator-äquivalente Privilegien geben, haben Sie sowieso keine Ahnung von Sicherheit, also schätze ich, dass Sie UAC auch ausschalten können. :-) –
- 1. Wie gewähre ich das Privileg "Grant Create Session"?
- 2. Wie gewähre ich NETWORK SERVICE Leseberechtigungen
- 3. Wie gewähre ich allen Benutzern eines Windows-Rechners mit Java-Programm die volle Berechtigung für einen Ordner?
- 4. SQL Server 2008: Wie gewähre ich einem Benutzernamen Berechtigungen?
- 5. Wie gewähre ich Laufzeitberechtigungen für Android API 23?
- 6. In RoR, wie vermeide ich diesen "unerlaubten Parameter" beim Absenden meines Formulars?
- 7. Wie kann ich Benutzern ein Dateispeicherlimit geben?
- 8. Wie gewähre ich einer Datenbankrolle Ausführungsberechtigungen für ein Schema? Was mache ich falsch?
- 9. Zugriff verweigert, anfängliche Datenbank erstellen - wie gewähre ich den richtigen Zugriff?
- 10. Wie gewähre ich mit FormsAuthentication den anonymen Zugriff auf eine URL?
- 11. Wie entferne ich Backslash von den Benutzern Eingang
- 12. Wie erstelle ich eine Liste von Benutzern in Alfresco Activiti?
- 13. Wie synchronisiere ich meine Entwicklung mit den Benutzern?
- 14. Wie blende ich ein Opt-In-Skript von angemeldeten Benutzern?
- 15. Wie bekomme ich alle öffentlichen Kalender von bestimmten Benutzern?
- 16. Wie blende ich eine Inhaltslistenseite von Benutzern aus?
- 17. GA - Inkonsistenzen bei der Gesamtzahl von Benutzern und neuen Benutzern
- 18. Android Synchronisierungsdaten zwischen Benutzern
- 19. Verfolgen von angemeldeten Benutzern
- 20. Wie Benutzern erlauben, nur bestimmte Felder
- 21. Links mit Benutzern Inhalt
- 22. Wie nginx Master-Prozess mit unterschiedlichen Benutzern
- 23. von aktuellen iCloud Benutzern
- 24. Migrieren von Parse-Benutzern zu Firebase-Auth-Benutzern
- 25. Geld zwischen Benutzern verschieben
- 26. Kann ich Benutzerdaten in Stormpath anderen Benutzern anzeigen?
- 27. Was sollte ich über das antisoziale Verhalten von Benutzern wissen?
- 28. Abrufen von Benutzern mit Backendess
- 29. Trac von anonymen Benutzern absichern?
- 30. Senden von Nachrichten zwischen Benutzern
Wie würden Sie es für einen Griff Standardbenutzer? Was hast du unter Windows XP gemacht? –
@IanBoyd Ich unterstütze keine Standardbenutzer. WinXP funktioniert als Win7 mit deaktivierter Benutzerkontensteuerung. –
Ich fürchte, du hast kein Glück. Die Vergabe von 'SE_MANAGE_VOLUME_NAME' an Benutzer ist eine Sicherheitslücke, da sie den Inhalt zuvor gelöschter Dateien lesen können. Wenn der Benutzer diese Berechtigung nicht hat, gibt es keine Möglichkeit, sie einfach zu bekommen. Die einzige Möglichkeit für einen Benutzer besteht darin, sich als Benutzer, der ein Administrator ist, anzumelden. –