![]() |
Нужен bat для удаления ИЗМЕНЁННЫХ папок и программ (ярлыков) из меню "Пуск-Программы"
Нужен батник для поиска и удаления папок и программ (ярлыков) из меню "Пуск->Программы", организованный таким образом, чтобы можно было найти и удалить искомое, даже если пользователь изменил их дефолтное расположение и название.
|
Nun-Nun, Ваш вопрос не ясен.
Цитата:
«и название» — тут придётся ориентироваться на свойство ярлыка target. Нужно будет знать это самое значение target — раз, исходное название и местоположение ярлыка — два. Во всяком случае, задача явно не для пакетных файлов, скорее это для Automation — WSH/PoSH/AutoIt. |
Цитата:
Цитата:
|
Цитата:
Примерно так: |
Цитата:
|
Цитата:
Опишите подробнее Вашу ситуацию, может станет яснее. |
Цитата:
1) ничего не переименовывая, перетащить исходную папку установленной программы вместе с ярлыками в другую папку меню "Программы"; 2) перетащить ярлыки установленной программы (как переименовав, так и не переименовав) в другую папку меню "Программы", а исходную папку (например, того же "7-Zip") удалить; 3) не перетаскивая исходной папки установленной программы, только переименовать ярлыки; 4) не перетаскивая исходной папки установленной программы, переименовать её (папку) и (или) ярлыки в ней; 5) ничего не перетаскивая, переименовать только исходную папку установленной программы, не трогая названий ярлыков; 6) ничего не перетаскивая, переименовать и исходную папку установленной программы, и названия ярлыков; 7) переименовать и исходную папку установленной прграммы, и названия ярлыков, а также перетащить всё это в другую папку меню "Программы". Конечно предсказать пользовательские действия и причуды хотя и сложно, но во всех перечисленных вариантах единственное, что всегда будет оставаться неизменным это название исполняемого файла установленной программы. Поэтому на него и придётся ориентироваться. Таким образом, поставленная задача выглядит так: найти и обезвредить (соррри, - удалить) последствия этого пользовательского рукоблудия (удалить и ярлыки, и папку, в которой они оказались (если, конечно, это отдельная папка)). При этом, разумеется, необходимо исключить возможность удаления как самого меню "Программы", так и расположенных в нём стандартных папок типа "Стандартные", "Автозагрузка", "Администрирование", "Утилиты" и т.п. P.S. Уровень моих навыков в области написания bat-файлов пока ещё не на том уровне, чтобы решить подобную задачу самостоятельно, вот и приходится обращаться за помощью. |
Nun-Nun, задача в поставленном виде банально не решаема (разве что иметь предварительно подготовленным весь эталонный набор ярлыков). Но, дабы не предсказывать действия пользователей — придумали групповые политики, в данном случае это:
Код:
Политика "Локальный компьютер" Код:
Удалить контекстные меню перетаскивания для элементов меню "Пуск" Если нет домена — для рабочей группы можно организовать распространение настроек политик посредством файлов реестра (это, конечно, не политики, но хотя бы так). Описание соответствия групповых политик можно взять из «gp.chm» из комплекта «Resource Kit» Windows 2000, или (для нынешних систем) отсюда: Download details: Group Policy Settings Reference for Windows and Windows Server, или, наконец, банально отсюда: Твики реестра (CHM) 1.9. По поводу же скрипта из #4, единственное, что могу предложить — поправить его так, дабы он удалял пустые папки, оставшиеся пустыми после удаления указанных ярлыков. Кстати, вопрос — перечень в «arrTargetPaths» у Вас длинный? Может, стоит сделать чтение данного перечня из текстового файла?! P.S. Наткнулся в Download details: Group Policy Settings Reference for Windows and Windows Server на весьма пользительную ссылку — Group Policy Search: указываем политику и сразу видим толкование, путь к политике в редакторе, применимость к ОС и параметр реестра, куда пишется данная политика при её применении. |
Цитата:
Цитата:
P.S. В идеале весь процесс работы по нахождению-удалению я вижу таким: при установке аддон запускает поиск по конкретному выражению в названиях папок и ярлыков: - если оно найдено в названии папки - удаление этой папки вместе с ярлыками; - если оно найдено только в названии ярлыка (ярлыков) - удаление этого ярлыка (ярлыков); - если после удаления ярлыка (ярлыков) папка осталась пустой - удаление этой папки (разумеется, если это не сама папка меню "Программы" или расположенные в ней типа "Стандартные", "Автозагрузка", "Администрирование", "Утилиты" и т.п.); - если ничего не найдено по конкретному выражению, то запуск поиска ярлыка (ярлыков) по названию исполняемого файла, при этом: - если такой ярлык найден - удаление этого ярлыка (если после удаления ярлыка папка осталась пустой - удаление папки (за исключением вышеназванных стандартных)). Вот, в принципе, так. |
Цитата:
Код:
If objFolder.Files.Count = 0 And objFolder.SubFolders.Count = 0 Then Цитата:
P.S. Есть подозрение, что Вы не сможете его использовать при установке в виде Addon'ов в таком виде из-за «CreateObject("Shell.Application")». |
Цитата:
Цитата:
P.S. Может в скрипт стОит добавить что-то типа функции определения, запущен ли скрипт на живой системе или нет? Если запущен не наживой системе, то не выполняется. Правда не представляю, возможно ли такое реализовать в принципе. |
Цитата:
Цитата:
Установкой приложений через addon'ы я не стал заниматься, ограничившись более удобным для меня методом «RunOnceEx», посему не особо представляю, на что там следует ориентироваться. Попробуйте спросить в соответствующей ветке по аддонам, а здесь дайте ссылку на свой пост, дабы я тоже мог смотреть на ответы. |
Nun-Nun, интересно, а какова конечная цель всех этих действий? Ну удалили Вы ярлыки, а что с самими программами будет? С их записями в реестр?
Теперь давайте разберем использование задуманного Вами деяния в виде аддона. Пусть это будет SVCPACK аддон. Отличить его установку на T13 и на живую систему наверное можно. На T13 не существует некоторых системных переменных, например, HOMEDRIVE, APPDATA, TEMP, HOMEPATH и т.д. и можно проверять их существование, но что это даст? Аддон кастрируемой программы может устанавливаться и позже чем Ваш аддон. Он может устанавливаться и из RunOnceEx, и из Run, и из WPI, что сведет на нет деятельность Вашего, ибо он не увидит, устанавливаемых позже, аддонов. Теперь про установку на живую систему "бедного" пользователя. Он привык к одному расположению ярлыков, а тут пришел Nun-Nun и все "почикал". :clapping: Ярлык может использоваться не только для двойного клика, но и быть ссылкой для запуска программы из какого-то скрипта в котором его место уже прописано, После Вашего аддона, переписывать скрипты прикажете? Не увидев ярлыка в привычном месте, пользователь может решить, что программы у него больше нет и, не проверив в Установка/удаление поставить поверх новую версию. Это не всегда безболезненно для программы да и мусор может оставаться. Если Вы еще собираетесь по такому же принципу удалять сами программы (поиском на компьютере исполняемого файла), то у меня на компьютере упомянутого 7z.exe, разных версий, наберется не один десяток в разных закоулках для разных целей, как и ярлыков к ним. И все они мне нужны и доверять наводить порядок в ярлыках и программах Вашему скрипту я бы не решился. Хотелось бы услышать: концепцию Вашего аддона, его конечную цель и круг его предполагаемых пользователей. |
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
|
Цитата:
Цитата:
Код:
wscript.exe "«путь к файлу скрипта.vbs»" Код:
cscript.exe //nologo "«путь к файлу скрипта.vbs»" P.S. Подобные вопросы следует задавать непосредственно в теме, ибо: * ответ в любом случае появится там же, поскольку ограничение на размер письма в ПМ не позволяет ответить иначе, нежели в теме; * задавая вопрос не на форуме, а одному человеку в ПМ, Вы резко сокращаете аудиторию, которая могла бы дать Вам ответ. Помимо Iska на форуме более чем достаточно участников, могущих и умеющих помочь. |
Цитата:
В принципе, если сочтёте, что лучше сделать по-другому - я возражать не буду, просто мне показалось, что предложенный вариант наиболее лёгкий в реализации (в крайнем случае могу даже и без этого обойтись: на живой системе запускать exe-шником, а из дистриба - батником, тогда вообще никаких проблем). P.S. За подсказки спасибо, а вот юмор по поводу сообщения, перекочевавшего из ПМ, выглядит, мягко говоря, странно. |
Время: 18:01. |
Время: 18:01.
© OSzone.net 2001-