Как программно добавить папку в Избранное в проводнике Windows
Я знаю о решениях, ответили здесь. По сути, идея заключается в создании ссылки на папку в %USERPROFILE%\Favoriates
папка.
Однако это не работает для меня. Я использую Windows8 (не знаю, имеет ли это значение). В моем %USERPROFILE%\Favoriates
, он содержит вспомогательные элементы для IE, а не файловый менеджер.
Я попытался найти эти настройки в реестре и файловой системе, создав папку с уникальным именем и добавив ее в обозреватель файлов. Затем найдите имя в реестре и файловой системе. Ничего не принесло.
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;
}
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"
Ах, похоже, для Windows 8 это место изменилось на %USERPROFILE%\Links
, скорее, чем %USERPROFILE%\Favoriates
,
Итак, чтобы ответить на мой вопрос. Чтобы программно добавить папку в проводник файлов "Избранное" в Windows 8, необходимо сделать ссылку на эту папку в %USERPROFILE%\Links
папка:
mklink /D %USERPROFILE%\Links\<Link_Name> <Tartget_Folder_Path>