Ich muss Dateien auf dem allgemeinen Desktop unter Windows speichern. Die Anwendung ist eine sehr spezielle Anwendung für genau einen speziellen PC (Gerätevorbereitung), so dass es für Nicht-Techie-Benutzer leicht sein musste, die Konfigurationsdatei zu finden und zu modifizieren. Jetzt sind wir zu einer Domain gewechselt, und weil verschiedene Leute (mit verschiedenen Accounts) die Software benutzen sollten, müssen sie an einem gemeinsamen Ort sein, der von jedem Benutzer gesehen wird. Also frag bitte nicht, warum es auf dem Desktop ist;)
Vorher habe ich nur Environment.GetFolderPath(Environment.SpecialFolder.Desktop)
verwendet. Es gibt einige der allgemeinen Ordner in der SpecialFolder
-Enumeration, aber der allgemeine Desktop scheint nicht da zu sein. Fehle ich etwas oder muss ich SHGetSpecialFolderPath
mit CSIDL_COMMON_DESKTOPDIRECTORY
aufrufen / aufrufen?
Ich denke, dass Sie die SHGetSpecialFolderPath
API verwenden müssen, da es keinen Aufzählungswert für "CommonDesktopDirectory" gibt. Sie können den Wert von CSIDL_COMMON_DESKTOPDIRECTORY
nicht explizit verwenden und ihn in Environment.SpecialFolder
umwandeln, da die Methode GetFolderPath
prüft, ob der Wert in der Enumeration definiert ist. Hier ist der Code der Methode GetFolderPath
(von Reflector):
So können Sie einfach das Teil kopieren und anpassen, das Sie brauchen ...
Zur Verdeutlichung - Unter gewöhnlichem Desktop meinen Sie C: \ Dokumente und Einstellungen \ All Users \ Desktop?
Wenn ja, ist das ein hässlicher Hack -
%Vor%Ein anderer Weg (ja, es ist auch hässlich und funktioniert wahrscheinlich nur unter Windows XP, nicht unter Vista) ist ein Wert aus der Registrierung zu lesen
HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Explorer \ Shellordner, allgemeiner Desktop
Tags und Links .net windows windows-shell