lynxx
Lt. Junior Grade
- Registriert
- Feb. 2005
- Beiträge
- 452
Mich hatte schon immer gestört das sich Visual Studio nicht daran stört wenn man die Pfade der Bibliotheken (Dokumente/Bilder/Musik/Video) ändert, sondern immernoch weiter fleissig auf z.B C:\Users\%Username%\Music verweist.
Ergibt zum Beispiel bei mir:
C#: C:\Users\Lynxx\Music
Dabei ist der Pfad in der Bibliothek auf D:\Musik geändert.
Diese Bibliothekspfade merkt sich Windows in XML-Dateien die in
C:\Users\Name\AppData\Roaming\Microsoft\Windows\Libraries\Library Name.library-ms als versteckte Dateien liegen.
Mithilfe des Microsoft.WindowsAPICodePack kann man das aber umgehen.
Dazu muss man zu allererst in Visual Studio unter Tools->"NuGet Package Manager"->"Package Manager Console" ausführen.
In der Console dann:
Install-Package WindowsAPICodePack-Core
Install-Package WindowsAPICodePack-Shell
(Es gibt auch noch WindowsAPICodePack-ExtendedLinguisticServices, WindowsAPICodePack-Sensors & WindowsAPICodePack-ShellExtensions. Die sind aber hierfür nicht nötig.)
Dann seinem Project hinzufügen:
Dann kann man den echten Defaultpfad für z.B Musik so finden:
Das ergibt das erwünschte Ergebnis:
WinAPI: D:\Musik
Hier noch einige Beispiele was man diesen Bibliotheken noch so machen kann ...
Viel spaß damit.
Code:
Console.WriteLine("C#: " + Environment.GetFolderPath(Environment.SpecialFolder.MyMusic));
C#: C:\Users\Lynxx\Music
Dabei ist der Pfad in der Bibliothek auf D:\Musik geändert.
Diese Bibliothekspfade merkt sich Windows in XML-Dateien die in
C:\Users\Name\AppData\Roaming\Microsoft\Windows\Libraries\Library Name.library-ms als versteckte Dateien liegen.
Mithilfe des Microsoft.WindowsAPICodePack kann man das aber umgehen.
Dazu muss man zu allererst in Visual Studio unter Tools->"NuGet Package Manager"->"Package Manager Console" ausführen.
In der Console dann:
Install-Package WindowsAPICodePack-Core
Install-Package WindowsAPICodePack-Shell
(Es gibt auch noch WindowsAPICodePack-ExtendedLinguisticServices, WindowsAPICodePack-Sensors & WindowsAPICodePack-ShellExtensions. Die sind aber hierfür nicht nötig.)
Dann seinem Project hinzufügen:
Code:
using System.IO;
using Microsoft.WindowsAPICodePack;
using Microsoft.WindowsAPICodePack.Shell;
Dann kann man den echten Defaultpfad für z.B Musik so finden:
Code:
String folderPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "Microsoft\\Windows\\Libraries");
ShellLibrary shellLibrary = ShellLibrary.Load("Music", folderPath, true);
Console.WriteLine("WinAPI: " + shellLibrary.DefaultSaveFolder);
shellLibrary.Close();
Das ergibt das erwünschte Ergebnis:
WinAPI: D:\Musik
Hier noch einige Beispiele was man diesen Bibliotheken noch so machen kann ...
Viel spaß damit.