5

Ich habe eine winforms App, die Protokolle ausschreiben muss. Die App muss auch ohne UAC-Warnungen ausgeführt werden und ein Konto ohne Administratorrechte verwenden.Wo ist ein sicherer Speicherort für Protokolldateien, der mit XP, Vista und Windows 7 kompatibel ist?

Wo kann ich meine Protokolle schreiben, ohne die Standardsicherheitseinstellungen zu beeinträchtigen? Außerdem muss dies unter Windows XP, Vista und 7 funktionieren.

Zusätzliche Punkte, wenn alle Benutzer in denselben Satz von Protokolldateien schreiben können.

Antwort

6

Sie können (sollten) nicht den Pfad fest codieren. Fragen Sie stattdessen Windows, wo es gespeichert werden soll, indem Sie SHGetFolderPath aufrufen, mit dem der Speicherort des AppData-Verzeichnisses des aktuellen Benutzers (oder aller Benutzer) zurückgegeben werden kann.

MSDN-Artikel mit C Lösung: http://support.microsoft.com/kb/310294

Nützliches Delphi Beispiel: http://delphi.about.com/od/kbwinshell/a/SHGetFolderPath.htm

Beachten Sie, dass es gefährlich ist, eine einmalige Abfrage für den Pfad zu tun, konvertieren zu einem absoluten String und Speichern Sie das in Ihren Einstellungen. Weil Windows es ändern kann. Sie können einer Domain beitreten, Windows upgraden usw., und Windows kann Ihre Dateien tatsächlich verschieben. Wenn Sie dann auf den alten Speicherort zeigen, ohne erneut nach "Wo ist dieser Ordner" zu fragen, brechen Sie. Dort gewesen, getan, dass ...

1

Mit SHGetFolderPath haben Sie die Möglichkeit, Benutzer-oder globale Protokolldateiverzeichnisse zu verwenden. Wenn Sie CSIDL_COMMON_APPDATA verwenden, dann: "Diese Information wird nicht roamen und ist für jeden zugänglich, der den Computer benutzt." was klingt wie es ist was du willst.

Verwandte Themen