Как программно добавить папку в избранное в Проводнике Windows
Я знаю о решениях, на которые ответил здесь. В основном идея состоит в том, чтобы создать ссылку на папку в папке %USERPROFILE%Favoriates.
Однако это не работает для меня. Я использую Windows8 (не знаю, имеет ли это значение). В моем %USERPROFILE%Favoriates, он содержит элементы favoriate для IE, а не проводника файлов.
Я попытался найти эти настройки в реестре и файловой системе, создав папку с очень уникальным именем и добавив ее в File explorer favoriates. Затем найдите имя в реестре и файловая система. Ничего не дало.
5 ответов:
Программно вы хотите получить расположение, используя SHGetKnownFolderPath с KNOWNFOLDERID_Links, вместо жесткого кодирования любого местоположения, а затем использовать
IShellLinkдля создания файла ярлыка в этом местоположении.Вот пример C# для первой части:
[DllImport("shell32.dll")] static extern int SHGetKnownFolderPath( [MarshalAs(UnmanagedType.LPStruct)] Guid knownFolderId, uint flags, IntPtr userToken, [MarshalAs(UnmanagedType.LPWStr)] out string knownFolderPath); // this corresponds to the KNOWNFOLDERID_Links constant: public static readonly Guid Links = new Guid("bfb9d5e0-c6a9-404c-b2b2-ae6db6af4968"); public static string GetKnownFolderPath(Guid knownFolderId) { string path; int result = SHGetKnownFolderPath(knownFolderId, 0, IntPtr.Zero, out path); // … (error handling; check result for E_FAIL, E_INVALIDARG, or S_OK) return path; }
Ах, похоже, для Windows 8 это расположение изменилось на
Итак, ответьте на мой вопрос. Чтобы программно добавить папку в Favoriates в проводнике Windows 8, необходимо создать ссылку на эту папку в папке%USERPROFILE%\Links, а не%USERPROFILE%\Favoriates.%USERPROFILE%\Links:mklink /D %USERPROFILE%\Links\<Link_Name> <Tartget_Folder_Path>
Function AddAFolderShortCut($fileName, $targetPath) { Write-Host "Creating Shortcut $fileName points to $targetPath" $WshShell = New-Object -comObject WScript.Shell $Shortcut = $WshShell.CreateShortcut("$env:USERPROFILE\Links\$fileName.lnk") $Shortcut.TargetPath = $targetPath $Shortcut.Save() } AddAFolderShortCut "FolderName" "C:\folderpath"

Comments