Frage

Ich bin für eine gute Möglichkeit, die lokalen Anwendungsdatenordner für einen bestimmten Benutzer zu erhalten -. Ohne für den Benutzer der Login-Daten einzugeben

SHGetFolderPath () kann ein Zugriffstoken für akzeptieren, was Benutzer Ich mag für die lokalen AppData-Ordner erhalten, aber einen Zugriffstoken zu erhalten, müssen Sie das Kennwort des Benutzers bereitzustellen. Auch nach dem docs dieser isn‘ t gestützt auf <= Windows 2000.

Der Registrierungsschlüssel HKCU \ Software \ Microsoft \ Windows \ Currentversion \ Explorer \ Shell-Ordner enthält den AppData-Wert, der die Position der lokalen AppData-Ordner für den aktuellen Benutzer enthält ... so I technisch könnte die HKCU Struktur für den bestimmten Benutzer montieren und diesen Wert zugreifen; jedoch scheint Microsoft zu stark die Verwendung dieses Schlüssels zu entmutigen, und ich habe gehört, dass es gelegentlich auch ungenau sein kann.

Ironischerweise unter Windows kann ein Administrator-Konto leicht zugreifen und alle Daten in jeden Anwender AppData-Ordner ändern, wenn sie nur Explorer öffnen und an die richtige Stelle finden ... aber es scheint nicht, eine zu sein einfache Möglichkeit, programmatisch die Position des AppData-Ordners für einen bestimmten Benutzer zu erhalten.

So habe ich alle anderen Optionen? Gerade jetzt, den Zugriff auf die Registry (Keuchen) scheint die beste Option, aber ich mag etwas offizielle und von Microsoft nicht entmutigen verwenden, wenn möglich.

würde Irgendwelche Vorschläge geschätzt.

War es hilfreich?

Lösung

Es gibt keinen dokumentierten Weg, dies AFAIK ohne Token zu tun, aber die beste Wahl ist:

  1. Suchen Sie das Profil: HKLM \ SOFTWARE \ Microsoft \ Windows NT \ Currentversion \ Profile (% windir% \ Profiles auf Win9x)
  2. AdjustTokenPrivileges für SE_RESTORE_NAME
  3. RegLoadKey NTUSER.DAT (USER.DAT auf 9x)
  4. Abfrage ... \ Currentversion \ Explorer \ User Shell Folders

Beachten Sie, dass die richtigen Registrierungsschlüssel zu überprüfen User Shell Folders und nicht die Shell Folders (Und Sie könnten den Weg zu erweitern haben), finden Sie unter die lange und traurige Geschichte von dem Shell Folders Schlüssel Details

Ich mag auch darauf hinweisen, dass dann möglich, wenn Sie die Daten in dem gemeinsamen program oder Ordner speichern sollen, und kopieren Sie dann in das Profil, wenn Ihr Programm zum ersten Mal ausgeführt wird für jeden Benutzer

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top