Как программно добавить папку в избранное в Проводнике Windows



Я знаю о решениях, на которые ответил здесь. В основном идея состоит в том, чтобы создать ссылку на папку в папке %USERPROFILE%Favoriates.



Однако это не работает для меня. Я использую Windows8 (не знаю, имеет ли это значение). В моем %USERPROFILE%Favoriates, он содержит элементы favoriate для IE, а не проводника файлов.



Я попытался найти эти настройки в реестре и файловой системе, создав папку с очень уникальным именем и добавив ее в File explorer favoriates. Затем найдите имя в реестре и файловая система. Ничего не дало.

425   5  

5 ответов:

Похоже, вам нужен %UserProfile%\Links.

Закрепленные избранные

Программно вы хотите получить расположение, используя 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 это расположение изменилось на %USERPROFILE%\Links, а не %USERPROFILE%\Favoriates.

Итак, ответьте на мой вопрос. Чтобы программно добавить папку в Favoriates в проводнике Windows 8, необходимо создать ссылку на эту папку в папке %USERPROFILE%\Links:
mklink /D %USERPROFILE%\Links\<Link_Name> <Tartget_Folder_Path>

Избранное проводника хранится здесь %USERPROFILE%\Links.

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

    Ничего не найдено.