Войти

Показать полную графическую версию : [решено] Как закрепить ярлыки в меню Пуск / панели задач?


ded-mazay
06-08-2010, 11:35
Доброго времени!
Есть некий батник отрабатывающий по окончанию установки приложений при первом входе в систему:

if exist "%ProgramFiles%\AIMP2\AIMP2.exe" xcopy "%SystemDrive%\lnk\AIMP2.lnk" "%APPDATA%\Microsoft\Internet Explorer\Quick Launch\User Pinned\StartMenu\" /Y
if exist "%ProgramFiles%\Total Commander\TOTALCMD.EXE" xcopy "%SystemDrive%\lnk\Total Commander.lnk" "%APPDATA%\Microsoft\Internet Explorer\Quick Launch\User Pinned\StartMenu\" /Y
if exist "%ProgramFiles%\Opera AC 3.6\OperaAC.exe" xcopy "%SystemDrive%\lnk\Opera AC.lnk" "%APPDATA%\Microsoft\Internet Explorer\Quick Launch\User Pinned\StartMenu\" /Y
if exist "%ProgramFiles%\OSAM\os.exe" xcopy "%SystemDrive%\lnk\OSAM.lnk" "%APPDATA%\Microsoft\Internet Explorer\Quick Launch\User Pinned\StartMenu\" /Y

RD "%SystemDrive%\lnk" /S /Q
regedit /S "%SystemDrive%\reg.reg"
del "%SystemDrive%\reg.reg" /Q /F
del "%SystemDrive%\start.cmd" /Q /F

Жмакаю Пуск - там пусто, чз проводник ярлыки в %APPDATA%\Microsoft\Internet Explorer\Quick Launch\User Pinned\StartMenu\ присутствуют, НЕ скрытые и не системные файлы.. В чем дело?

Vadikan
06-08-2010, 11:40
ded-mazay, Windows 7? Там нет панели быстрого запуска, по кр. мере по умолчанию.

ded-mazay
06-08-2010, 11:47
Vadikan, да, но когда жмакаешь на ярлыке или exe'шнике "Закрепить в меню Пуск" - ярлык именно там и появляется (...\User Pinned\StartMenu\), кроме того если я руками чз "Закрепить в меню Пуск" добавляю тот же самый Total Commander - он там уже появляется как Total Commander (2)...
P.S.
Да Win 7

Vadikan
07-08-2010, 13:40
ded-mazay, понял теперь... Наверное, недостаточно просто положить их в папку :) Вот вариант со скриптом от профессионалов: Pin Items to the Start Menu or Windows 7 Taskbar via Script - The Deployment Guys (http://blogs.technet.com/b/deploymentguys/archive/2009/04/08/pin-items-to-the-start-menu-or-windows-7-taskbar-via-script.aspx)

Фрагмент скрипта:

Const CSIDL_COMMON_PROGRAMS = &H17
Const CSIDL_PROGRAMS = &H2
Set objShell = CreateObject("Shell.Application")
Set objAllUsersProgramsFolder = objShell.NameSpace(CSIDL_COMMON_PROGRAMS)
strAllUsersProgramsPath = objAllUsersProgramsFolder.Self.Path
Set objFolder = objShell.Namespace(strAllUsersProgramsPath & "\Accessories")
Set objFolderItem = objFolder.ParseName("Calculator.lnk")
Set colVerbs = objFolderItem.Verbs
For Each objVerb in colVerbs
Wscript.Echo objVerb
Next

Красным выделен путь к папке, где лежит ярлык (можно задать путь типа C:\) и имя ярлыка. Дополнительная помощь по скриптам у нас тут Скриптовые языки администрирования Windows (http://forum.oszone.net/forum-102.html)

Morpheus
26-01-2011, 23:39
Pin and unpin applications from the taskbar and Start-menu (http://gallery.technet.microsoft.com/scriptcenter/b66434f1-4b3f-4a94-8dc3-e406eb30b750) - вариант на PowerShell.

defor6
04-04-2012, 23:17
Уж простите, раз тема есть, создавать новую не стану, поднимем эту)

Вот уже больше года прошло. Появился ли простой и вразумительный ответ на вопрос: "Как из батника (напрямую или с использованием вспомогательных экзэшников) создать и/или поместить ярлыки нужных программ в меню ПУСК?" На всякий случай реальный путь в системе : %APPDATA%\Microsoft\Internet Explorer\Quick Launch\User Pinned\StartMenu\

Есть подозрение, что зараза семерка, кроме физического помещения ярлыка по вышеуказанному пути, еще и в реестре в шестнадцатиричном виде как-то их регистрирует.

Если через батник и простенькую вспомогательную утильку ну совсем никак - наведите, пожалуйста, на требуемый скрипт и по возможности объясните как им пользоваться. Заранее спасибо.

Iska
05-04-2012, 00:20
defor6, напрямую из пакетного файла — никак. Если недостаточно предыдущих двух постов — на WSH и PoSH — напишите и скомпилируйте исполняемый файл, работающий по тому же механизму.

Или я что-то недопонимаю?

defor6
06-04-2012, 22:49
Да как бы все правильно... Просто сам я скриптовых языков, кроме пакетных файлов не знаю совершенно. Да и говоря по правде узнавать не стремлюсь. Сейчас в активном режиме осваиваю С#... Потому предыдущие посты я просто не понимаю, пытался логически разобраться, что и зачем делается, но не смог( Помогите, пожалуйста, или написать скрипт и объяснить, как им пользоваться или полностью объяснить алгоритм действий, которые необходимы для добавления ярлыка в меню Пуск (а дальше уже с учетом своих знаний и умений попробую реализовать его). Вот..
Или все же для реализации процесса мне обязательно нужно вникнуть и научиться работать с WSH и PoSH » ?

Iska
07-04-2012, 01:23
или полностью объяснить алгоритм действий, которые необходимы для добавления ярлыка в меню Пуск »
Алгоритм действий прост — надо, получив объект Проводника «Shell.Application» (Shell object (http://msdn.microsoft.com/en-us/library/windows/desktop/bb774094(v=vs.85).aspx)), пройти по иерархии объектов до нужного нам ярлыка/исполняемого файла:

* посредством метода «.NameSpace()» (Shell.NameSpace method (http://msdn.microsoft.com/en-us/library/windows/desktop/bb774085(v=vs.85).aspx)) объекта «Shell.Application» получить ссылку на объект «Folder» (Folder object (http://msdn.microsoft.com/en-us/library/windows/desktop/bb787868(v=vs.85).aspx)) [здесь желательно использовать не прямые пути, а константы CSIDL, а ещё лучше — предопределённые имена объектов Проводника: WSH: перечень предопределённых символьных имён Shell.Application (http://forum.script-coding.com/viewtopic.php?id=3768)];

* посредством метода «.ParseName()» (Folder.ParseName method (http://msdn.microsoft.com/en-us/library/windows/desktop/bb787882(v=vs.85).aspx)) получить ссылку на объект «FolderItem» (FolderItem object (http://msdn.microsoft.com/en-us/library/windows/desktop/bb787810(v=vs.85).aspx)) внутри Folder;

* затем в цикле перебирать глаголы (Verbs (http://msdn.microsoft.com/en-us/library/windows/desktop/bb787850(v=vs.85).aspx)), относящиеся к данному объекту «FolderItem»;

* при совпадении свойства «.Name» (Name (http://msdn.microsoft.com/en-us/library/windows/desktop/bb774174(v=vs.85).aspx)) очередного объекта «FolderItemVerb» (FolderItemVerb object (http://msdn.microsoft.com/en-us/library/windows/desktop/bb774172(v=vs.85).aspx)) с искомым значением (названием пункта контекстного меню ярлыка/исполняемого файла «Закрепить/Открепить в меню Пуск/на Панель задач»; не забываем про амперсанд перед горячей клавишей, если таковые будут) выполнить его метод «.DoIt()» (DoIt (http://msdn.microsoft.com/en-us/library/windows/desktop/bb774170(v=vs.85).aspx)).




© OSzone.net 2001-2012