Biokaminy-lux.ru

Все про ремонт быт. техники
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Установка программ без прав администратора на Windows

Установка программ без прав администратора на Windows

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

Для установки некоторого программного обеспечения требуется наличие прав администратора. Кроме этого и сам администратор может ставить ограничение на установку различного софта. В случае когда требуется выполнить инсталляцию, а разрешения на нее нет, предлагаем воспользоваться несколькими простыми методами, описанными ниже.

Просмотр и отключение программ в автозагрузке в параметрах Windows 10

Один из самых простых способов просмотреть программы в автозагрузке Windows 10 — использовать соответствующих пункт в Параметрах:

Автозагрузка программ в параметрах Windows 10

  1. Откройте Параметры Windows 10 (клавиши Win+I или через меню Пуск).
  2. Перейдите в раздел Приложения — Автозагрузка.
  3. Ознакомьтесь со списком программ в автозагрузке, отключите ненужные.

Если вы не знаете, что можно отключить, а чего лучше не отключать, в общих чертах ситуация следующая: даже отключив все элементы, вы не навредите системе, но может оказаться, что какие-то постоянно нужные программы (мессенджеры, антивирусы, программы облачных хранилищ) придется запускать вручную. В любом случае, можете смело экспериментировать.

Использование групповой политики для автозапуска

Откройте оснастку «Групповая политика» (gpedit.msc), перейдите на вкладку «Конфигурация компьютера — Административные шаблоны — Система». В правой части оснастки перейдите на пункт «Вход в систему». (рис.2).

По умолчанию эта политика не задана, но вы можете добавить туда программу: включаем политику, нажимаем кнопку «Показать — Добавить», указываем путь к программе, при этом если запускаемая программа находится в папке ..WINDOWSSystem32 то можно указать только название программы, иначе придется указать полный путь к программе.

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

Внимание! Данный пункт политики доступен в Конфигурации компьютера и Конфигурации пользователя. Если заданы оба пункта политики, то вначале будет запущена программа из Конфигурации компьютера, а затем уже пользователя.

При этом в системном реестре в разделе [HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionpolicies] создается подраздел ExplorerRun с ключами добавленных программ.

Пример:
[HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionpoliciesExplorerRun]
«1»=»notepad.exe»

В итоге получаем запуск Блокнота (рис 3).

Аналогично задается автозапуск для текущих пользователей, в оснастке «Групповая политика» это путь «Конфигурация пользователя — Административные шаблоны — Система» (рис 2), а в реестре раздел [HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionPoliciesExplorerRun]

Внимание! При этом программы из этого списка не отображаются в списке программ доступных для отключения в msconfig.exe, а также определяются не всеми менеджерами автозагрузки.

Команда Runas – запуск программ от имени другого пользователя из командной строки

В Windows есть консольная утилита runas.exe, которая используется для запуска приложений от имени другого пользователя из командной строки. Также команда runas позволяет сохранить пароль пользователя в Windows Credential Manager, чтобы его не приходилось набирать каждый раз.

Откройте командную строку (или окно Выполнить, нажав сочетание клавиш Win+R). Для запуска Блокнота с правами учетной записи admininstrator выполните команду:

runas /user:administrator “C:Windowscmd.exe”

runas /user:”user test” notepad.exe

runas /user:admin

В отрывшемся окне появится приглашение «Введите пароль для admin», где нужно набрать пароль и нажать Enter.

Введите пароль для admin

Должно открыться ваше приложение. В моем случае это cmd. В заголовке окна указано Запущено от имени CompNameusername :

cmd.exe заголовок запущено от другого имени

Можно, например, открыть панель управления под другим пользователем:

runas /user:admin control

Для запуска программы из-под доменного пользователя нужно использовать формат имени UserName@DomainName или DomainNameUserName . Например, чтобы с помощью блокнота открыть текстовый файл от имени пользователя домена CORP, используйте команду:

runas /user:corpserver_admin “C:Windowsnotepad.exe C:tmp2871997x64.txt”

Иногда нужно запустить программу от имени доменного пользователя с компьютера, который не добавлен в домен AD. В этом случае нужно использовать такую команду (при условии, что в сетевых настройках вашего компьютера указан DNS сервер, который может отрезолвить этот домен):

runas /netonly /user:contosoaaivanov cmd.exe

Если для запуска программы от другого пользователя не нужно загружать его профиль, используйте параметр /noprofile . При этом приложение запускается намного быстрее, но может вызвать некорректную работу программ, которые хранят данные в профиле пользователя.

Как войти в программу от имени админа через консоль

Чтобы запустить программы с повышенными привилегиями, нам нужно запустить саму консоль в режиме админа. В Windows 10 запустить командную строку в этом режиме можно тремя способами.

Первый способ через меню «Пуск».

Второй с помощью поиска Windows 10 по фразе «CMD».

Запуск консоли от имени администратора

И третий, кликнув на значке пуска правой кнопкой мыши или набрав комбинацию Win + X , выбрав соответствующий пункт.

Читайте так же:
Операционная система для нетбука установка

Запуск через меню win-x

Выберем один из способов и запустим программу в режиме администратора. Поскольку консоль работает в режиме администратора, то и утилиты она будет запускать в этом же режиме. Например, для запуска CCleaner нужно перейти в директорию, в которой установлена утилита. Для этого наберем такую команду: cd c:Program FilesCCleaner После этого наберем команду: Ccleaner.exe которая откроет саму утилиту. Последовательно набранные команды для утилиты показаны на изображении ниже.

Запуск ccleaner через консоль

Для утилиты VLC media player нужно набрать команды: cd C:Program FilesVideoLANVLC
vlc.exe

Таким же образом, как показано в примере, можно запустить любую установленную программу.

Брокерские услуги оказывает ПАО Сбербанк (Банк), генеральная лицензия Банка России на осуществление банковских операций № 1481 от 11.08.2015 г., лицензия на оказание брокерских услуг №045-02894-100000 от 27.11.2000 г.

Подробную информацию о брокерских услугах Банка Вы можете получить по телефону 8-800-555-55-50, на сайте www.sberbank.ru/broker или в отделениях Банка. На указанном сайте также размещены актуальные на каждый момент времени Условия предоставления брокерских и иных услуг. Изменение условий производится Банком в одностороннем порядке.

Содержание настоящего документа приводится исключительно в информационных целях и не является рекламой каких-либо финансовых инструментов, продуктов, услуг или предложением, обязательством, рекомендацией, побуждением совершать операции на финансовом рынке. Несмотря на получение информации, Вы самостоятельно принимаете все инвестиционные решения и обеспечиваете соответствие таких решений Вашему инвестиционному профилю в целом и в частности Вашим личным представлениям об ожидаемой доходности от операций с финансовыми инструментами, о периоде времени, за который определяется такая доходность, а также о допустимом для Вас риске убытков от таких операций. Банк не гарантирует доходов от указанных в данном разделе операций с финансовыми инструментами и не несет ответственности за результаты Ваших инвестиционных решений, принятых на основании предоставленной Банком информации. Никакие финансовые инструменты, продукты или услуги, упомянутые в настоящем документе, не предлагаются к продаже и не продаются в какой-либо юрисдикции, где такая деятельность противоречила бы законодательству о ценных бумагах или другим местным законам и нормативно-правовым актам или обязывала бы Банк выполнить требование регистрации в такой юрисдикции. В частности, доводим до Вашего сведения, что ряд государств (в частности, США и Европейский Союз) ввел режим санкций, которые запрещают резидентам соответствующих государств приобретение (содействие в приобретении) долговых инструментов, выпущенных Банком. Банк предлагает Вам убедиться в том, что Вы имеете право инвестировать средства в упомянутые в настоящем документе финансовые инструменты, продукты или услуги. Таким образом, Банк не может быть ни в какой форме привлечен к ответственности в случае нарушения Вами применимых к Вам в какой-либо юрисдикции запретов.

Информация о финансовых инструментах и сделках с ними, которая может содержаться на данном интернет-сайте и в размещенных на нем сведениях, подготовлена и предоставляется обезличено для определенной категории или для всех клиентов, потенциальных клиентов и контрагентов Банка не на основании договора об инвестиционном консультировании и не на основании инвестиционного профиля посетителей сайта. Таким образом, такая информация представляет собой универсальные для всех заинтересованных лиц сведения, в том числе общедоступные для всех сведения о возможности совершать операции с финансовыми инструментами. Данная информация может не соответствовать инвестиционному профилю конкретного посетителя сайта, не учитывать его личные предпочтения и ожидания по уровню риска и/или доходности и, таким образом, не является индивидуальной инвестиционной рекомендацией персонально ему. Банк сохраняет за собой право предоставлять посетителям сайта индивидуальные инвестиционные рекомендации исключительно на основании договора об инвестиционном консультировании, исключительно после определения инвестиционного профиля и в соответствии с ним. С условиями использования информации при осуществлении деятельности на рынке цеых бумаг можно ознакомиться по ссылке.

Банк не может гарантировать, что финансовые инструменты, продукты и услуги, описанные в нем, подходят лицам, которые ознакомились с такими материалами. Банк рекомендует Вам не полагаться исключительно на информацию, с которой Вы были ознакомлены в настоящем материале, а сделать свою собственную оценку соответствующих рисков и привлечь, при необходимости, независимых экспертов. Банк не несет ответственности за финансовые или иные последствия, которые могут возникнуть в результате принятия Вами решений в отношении финансовых инструментов, продуктов и услуг, представленных в информационных материалах.

Банк прилагает разумные усилия для получения информации из надежных, по его мнению, источников. Вместе с тем, Банк не делает никаких заверений в отношении того, что информация или оценки, содержащиеся в настоящем информационном материале, являются достоверными, точными или полными. Любая информация, представленная в данном документе, может быть изменена в любое время без предварительного уведомления. Любая приведенная в настоящем документе информация и оценки не являются условиями какой-либо сделки, в том числе потенциальной.

Читайте так же:
Установка операционной системы на hp pavilion

Финансовые инструменты и инвестиционная деятельность связаны с высокими рисками. Настоящий документ не содержит описания таких рисков, информации о затратах, которые могут потребоваться в связи с заключением и прекращением сделок, связанных с финансовыми инструментами, продуктами и услугами, а также в связи с исполнением обязательств по соответствующим договорам. Стоимость акций, облигаций, инвестиционных паев и иных финансовых инструментов может уменьшаться или увеличиваться. Результаты инвестирования в прошлом не определяют доходов в будущем. Прежде чем заключать какую-либо сделку с финансовым инструментом, Вам необходимо убедиться, что Вы полностью понимаете все условия финансового инструмента, условия сделки с таким инструментом, а также связанные со сделкой юридические, налоговые, финансовые и другие риски, в том числе Вашу готовность понести значительные убытки.

Банк и/или государство не гарантирует доходность инвестиций, инвестиционной деятельности или финансовых инструментов. До осуществления инвестиций необходимо внимательно ознакомиться с условиями и/или документами, которые регулируют порядок их осуществления. До приобретения финансовых инструментов необходимо внимательно ознакомиться с условиями их обращения.

Банк обращает внимание Инвесторов, являющихся физическими лицами, на то, что на денежные средства, переданные Банку в рамках брокерского обслуживания, не распространяется действие Федерального закона от 23.12.2003 №177-ФЗ «О страховании вкладов физических лиц в банках Российской Федерации».

Банк настоящим информирует Вас о возможном наличии конфликта интересов при предложении рассматриваемых в информационных материалах финансовых инструментов. Конфликт интересов возникает в следующих случаях: (i) Банк является эмитентом одного или нескольких рассматриваемых финансовых инструментов (получателем выгоды от распространения финансовых инструментов) и участник группы лиц Банка (далее – участник группы) одновременно оказывает брокерские услуги и/или (ii) участник группы представляет интересы одновременно нескольких лиц при оказании им брокерских или иных услуг и/или (iii) участник группы имеет собственный интерес в совершении операций с финансовым инструментом и одновременно оказывает брокерские услуги и/или (iv) участник группы, действуя в интересах третьих лиц или интересах другого участника группы, осуществляет поддержание цен, спроса, предложения и (или) объема торгов с ценными бумагами и иными финансовыми инструментами, действуя, в том числе в качестве маркет-мейкера. Более того, участники группы могут состоять и будут продолжать находиться в договорных отношениях по оказанию брокерских, депозитарных и иных профессиональных услуг с отличными от инвесторов лицами, при этом (i) участники группы могут получать в свое распоряжение информацию, представляющую интерес для инвесторов, и участники группы не несут перед инвесторами никаких обязательств по раскрытию такой информации или использованию ее при выполнении своих обязательств; (ii) условия оказания услуг и размер вознаграждения участников группы за оказание таких услуг третьим лицам могут отличаться от условий и размера вознаграждения, предусмотренного для инвесторов. При урегулировании возникающих конфликтов интересов Банк руководствуется интересами своих клиентов. Более подробную информацию о мерах, предпринимаемых Банком в отношении конфликтов интересов, можно найти в Политике Банка по управлению конфликтом интересов, размещённой на официальном сайте Банка.

Как запустить приложение в виде службы Windows

Можно ли запустить клиентское приложение в качестве службы? В одной из статей я описывал способы создания службы Windows штатными средствами ОС. Однако не каждое консольное приложение сможет запуститься как служба, а программы с графическим интерфейсом в принципе не умеют работать подобным образом. Но возможность запустить приложение как службу все же есть, и поможет нам в этом программа с оригинальным названием Non-Sucking Service Manager.

NSSM представляет из себя свободное программное обеспечение с открытым кодом и поддерживает все операционные системы Microsoft, начиная с Windows 2000 и заканчивая Windows 8. NSSM не требует установки, достаточно его загрузить и распаковать. В дистрибутив входят версии для 32- и 64-разрядных ОС. Взять программу можно с сайта nssm.cc, на данный момент последняя стабильная версия 2.21.1, которую я и буду использовать.

Для демонстрации возможностей NSSM попробуем запустить Блокнот Windows в качестве службы на Windows 8.1.

Создание службы

Для создания службы с именем notepad запускаем командную консоль, переходим в папку с распакованным NSSM (для 64-разрядной Windows) и вводим команду nssm install notepad , которая открывает окно графического инсталлятора NSSM. Чтобы создать службу, достаточно в поле Path указать путь к исполняемому файлу и нажать кнопку «Install service». Дополнительно в поле Options можно указать ключи, необходимые для запуска службы.

Читайте так же:
Для установки продукта требуется операционная система криптопро

запуск NSSM

Также на этапе создания новой службы можно указать некоторые дополнительные параметры.

На вкладке «Shutdown» перечислены методы остановки и таймауты, используемые при штатном завершении работы или аварийной остановке приложения. Когда NSSM получает команду остановки (напр. при завершении работы приложения), то он пытается остановить контролируемое приложение штатным образом. Если же приложение не отвечает, то NSSM может принудительно завершить все процессы и подпроцессы этого приложения.

Всего есть четыре этапа завершения работы приложения, и по умолчанию они будет использоваться в таком порядке:

• На первом этапе NSSM пытается сгенерировать и отправить событие Ctrl+C. Этот способ хорошо работает для консольных приложений или скриптов, но не применим для графических приложений;
• Затем NSSM определяет все окна, созданные приложением, и посылает им сообщение WM_CLOSE, инициирующее выход из приложения;
• Третьим этапом NSSM вычисляет все потоки, созданные приложением, и отправляет им сообщение WM_QUIT, которое будет получено если приложение имеет очередь сообщений потока;
• И в качестве последнего средства NSSM может вызвать метод TerminateProcess(), принудительно завершив работу приложения.

Возможно отключить некоторые или даже все методы, однако для разных приложений срабатывают разные методы и для корректного завершения работы приложения рекомендуется оставить все как есть.

настройки выключения службы в NSSM

По умолчанию при падении службы NSSM пытается рестартовать ее. На вкладке «Exit actions» можно изменить автоматическое действие при нештатном завершении работы приложения, а также выставить задержку перед автоматическим перезапуском приложения.

настройки выхода для службы в NSSM

На вкладке «Input/Output (I/O)» можно задать перенаправление вводавывода приложения в указанный файл.

вкладка I/O в NSSM

На вкладке «Environment» можно задать для службы новые переменные окружения, или переопределить существующие.

вкладка Environment в NSSM

Также можно не пользоваться графической оболочкой и сразу создать службу в консоли такой командой:

nssm install notepad ″C:Windowssystem32notepad.exe″

Управление службой

После создания службы с помощью NSSM зайдем в оснастку Services и найдем службу notepad. Как видите, с виду она ничем не отличается от остальных служб, мы также можем ее запустить, остановить или изменить режим запуска. Однако обратите внимание, что в качестве исполняемого файла указан nssm.exe.

свойства службы

А если зайти в Task Manager, то мы увидим следующую картину: в качестве основного (родительского) процесса запущен NSSM, служба notepad запущена как его дочерний процесс, и уже в этом дочернем процессе запущено приложение Блокнот.

служба NSSM в диспетчере задач

Удаление службы

Для удаления службы вводим команду nssm remove notepad и подтверждаем ее удаление. А введя команду nssm remove notepad confirm , можно обойтись и без подтверждения.

удаление службы в NSSM

Запуск службы в интерактивном режиме

Основное отличие пользовательского приложения от службы заключается в том, что после запуска приложение может требовать для продолжения работы дополнительных действий со стороны пользователя — например нажать кнопку или ввести команду. Для этого необходимо получить к нему доступ, что как оказывается, не так-то просто сделать.

Для того, чтобы запустить службу в интерактивном режиме, надо в оснастке Службы открыть ее свойства и на вкладке «Вход в систему» отметить чекбокс «Разрешить взаимодействие с рабочим столом».

разрешаем службе взаимодействие с рабочим столом

А дальше начинаются чудеса Cлужба, запущенная в интерактивном режиме, открывается в изолированном сеансе (session 0). Попасть в этот сеанс можно только при помощи Службы обнаружения интерактивных служб (ui0detect), которая отслеживает запуск интерактивных служб на компьютере и выдает оповещение. В Windows 7Server 2008 эта служба активна по умолчанию, а в Windows 8Server 2012 она отключена и не отображается в графической оснастке Службы (по крайней мере я ее там не нашел). Более того, если вы все же найдете эту таинственную службу и попробуете ее запустить, то получите сообщение об ошибке.

А дело в том, что для ее запуска необходимо разрешить запуск интерактивных служб на компьютере. Поэтому открываем редактор реестра, находим в разделе HKLMSystemCurrentControlSetControlWindows параметр типа DWORD с именем NoInteractiveServices и ставим его значение в .

разрешаем запуск интерактивных служб

После чего открываем консоль PowerShell и стартуем службу обнаружения командой:

Start-Service -Name ui0detect

включаем службу обнаружения

Убедившись что служба обнаружения запущена, рестартуем службу notepad, и получаем вот такое окошко. Выбираем пункт «Посмотреть сообщение»

Читайте так же:
Как синхронизировать айтюнс с гугл

окно обнаружения запуска интерактивной службы

и попадаем в нулевой сеанс, в котором работает наше приложение. Дальше производим с ним необходимые действия и возвращаемся обратно.

нулевой сеанс

Такое вот интересное решение для запуска приложений в виде служб Windows. Не самое красивое, но вполне соответствующее своему названию

Управление автоматической загрузкой приложений

Область состояния панели задач Windows — полезная вещь: в ней отображаются значки различных полезных программ типа антивируса и Windows Update, работающих в фоновом режиме. Благодаря области состояния мы всегда знаем, какие программы выполняются на компьютере. Но со временем в области состояния появляется все больше значков. Здесь и программы, следящие за накопителями CD-ROM и DVD, и блокировка рекламы и всплывающих окон, и управление загрузкой файлов из Internet, и еще много всего. А ведь еще множество программ работают в фоновом режиме, и они нигде не показывают свои значки.

Было бы неплохо, если бы на компьютере выполнялись только те программы, которые я сам запускаю вручную, и те, которые я выбрал для автоматической загрузки и поместил в папку автозапуска. К сожалению, некоторые программы запускаются без моего ведома, поскольку программа установки по своему усмотрению добавила соответствующие разделы в реестр. Проверить каталог автозагрузки не составит труда, а вот с реестром дело обстоит не так просто. Чтобы разобраться с самопроизвольным запуском программ, я однажды написал сценарий на Perl, позволяющий управлять загрузкой любых приложений при регистрации пользователя.

Каталог автозапуска

Если пользователю необходимо, чтобы какое-то приложение всегда запускалось при начале сеанса работы, он может просто поместить ярлык этого приложения в каталог автозапуска. Если администратор считает, что приложение должно запускаться для каждого пользователя, работающего за данным компьютером, он может поместить ярлык в папку автозапуска для каждого пользователя или же в папку загрузки для всех пользователей. Это может быть любой исполняемый файл, пакетное задание, сценарий (или документ, для которого в системе зарегистрирована программа-обработчик, такая как MS Word для .DOC).

При начале сеанса работы пользователя Windows выполняет запуск всех программ, помещенных в каталоги автозапуска. Их список можно просмотреть: Пуск/Все программы/Автозагрузка. В этом списке содержатся ярлыки программ, запускаемых для текущего пользователя, а также программ из общего каталога для всех пользователей данного компьютера All Users. Как правило, содержимое этих меню соответствует содержимому подкаталогов Главное менюПрограммыАвтозагрузка — каталога %USERPROFILE% для данного пользователя и каталога %ALLUSERSPROFILE% для всех пользователей (%USERPROFILE%start menuprogramsstartup и %ALLUSERSPROFILE%start menuprogramsstartup).

Запуск приложений через реестр

Некоторые поставщики предпочитают запускать свои приложения через реестр. Это делается по различным соображениям, но, на мой взгляд, такой способ запуска применяется в тех случаях, когда разработчик хочет скрыть автоматический запуск приложения. Таким способом, кстати, часто запускаются и шпионские программы.

В реестре имеется несколько разделов, предназначенных для автоматического запуска приложений. Список этих разделов содержится в статье «Где найти программы автоматического запуска», опубликованной в Windows & .NET Magazine/RE № 2 за 2003 год ( http://www.osp.ru/win2000/2003/02/096.htm ). Подавляющее большинство программ используют разделы Run и RunOnce, каждый из которых существует в двух вариантах — для конкретного пользователя и для всех пользователей. Раздел Run применяется для запуска приложений в начале каждого сеанса работы пользователя. Раздел RunOnce позволяет выполнить однократный запуск приложения при регистрации пользователя, после чего программа автоматически удаляется из списка; таким образом, программа запускается всего один раз. Раздел RunOnсe обычно используется различными программами установки для запуска программ, завершающих процесс установки или удаления приложения. Для текущего сеанса пользователя раздел Run имеет путь HKEY_CURRENT_USERSoftwareMicrosoftWindows CurrentVersionRun, раздел RunOnce — HKEY_CURRENT_USERSoftwareMicrosoftWindows CurrentVersionRunOnce. Общие для всех пользователей компьютера разделы Run и RunOnce расположены в HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows CurrentVersionRun и HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows CurrentVersionRunOnce.

DumpStartups.pl

Программа DumpStartups.pl помогает управлять списком приложений, запускающихся в начале сеанса работы пользователя. Этот сценарий задействует для работы несколько модулей и расширений (бесплатных), которые по умолчанию обычно не устанавливаются. Список этих модулей и расширений приведен в табл. 1 с указанием, откуда их можно загрузить. На сайте ActiveState ( http://www.activestate.com ) можно бесплатно загрузить ActivePerl.

Для экономии места в листинге1приведены только наиболее важные фрагменты кода сценария, в которых происходит обработка. Полный код сценария можно получить на сайте.

В приведенном листинге 1 в метке А выполняется загрузка библиотеки Shell32.dll и обращение к функции SHGetFolderPath() для получения имен каталогов автозагрузки для текущего пользователя и для всех пользователей компьютера. При этом присваиваются значения тех переменных, которые понадобятся в дальнейшем для работы сценария.

Читайте так же:
После установки операционной системы необходимо

Современные версии Windows (Windows Server 2003, Windows XP, Windows 2000 и, в некоторых случаях, Windows NT 4.0) поддерживают переменную среды pathext, определяющую список расширений исполняемых файлов, за исключением .pif и .lnk. Приведенный в метке B фрагмент кода позволяет сценарию определить, поддерживается ли в системе переменная среды pathext. Если нет, программа создает собственную переменную среды со значениями .bat, .cmd, .com и .vbs. Затем она формирует массив расширений имен файлов и собирает все расширения обратно в одну строку с символом «|» (вертикальная линия) в качестве разделителя. Далее подпрограмма использует полученную строку в качестве регулярного шаблона для определения того, что имя файла является именем исполняемого модуля.

Фрагмент кода по метке C определяет запускаемые элементы из реестра и с системного диска. Далее во фрагменте кода по метке D, в зависимости от указанных в командной строке параметров запуска программы, производится либо вывод списка запускаемых программ на экран, либо удаление запускаемых программ из реестра.

Приведенная во фрагменте по метке E подпрограмма ProcessKey() перечисляет все значения, хранящиеся в указанном разделе реестра, и создает анонимный хеш, содержащий значения и связанную с ними информацию. Этот хеш сохраняется в массиве @ValueList. Данный массив возвращается в вызывающую процедуру в конце подпрограммы.

Подпрограмма ProcessDir() выполняет для указанного каталога автозагрузки то же, что ProcessKey() для разделов реестра, — собирает массив имен всех файлов в указанном каталоге и его подкаталогах. Сценарий передает в подпрограмму имена каталогов автозагрузки текущего пользователя и каталога All Users. При обнаружении ярлыков подпрограмма определяет свойства ярлыка с помощью вызова расширения Win32::Shortcut (метка F). Далее сценарий определяет описание и имя запускаемой программы. Если описание отсутствует, сценарий выдает имя запускаемого файла. Если подпрограмма ProcessDir() обнаруживает исполняемый файл, производится попытка извлечь информацию о файле (фрагмент G). В конце концов подпрограмма сохраняет собранные данные в массив @ValueList и возвращает его в вызывающую процедуру.

Когда пользователь указывает элемент, который следует удалить, сценарий вызывает подпрограмму Remove(). Эта подпрограмма, приведенная во фрагменте H, определяет тип программы — раздел реестра или файл на диске. Если элемент представляет собой элемент реестра (то есть параметр раздела), сценарий удаляет этот элемент из реестра. Если элемент является файлом, сценарий удаляет файл с системного диска. Эти операции необратимы. Удаляемые файлы и значения реестра в «Корзину» не попадают.

Подпрограмма GetSpecialDirectory() возвращает путь к указанному каталогу. Например, каталог «Мои документы» может быть размещен на локальном диске или в общей папке на удаленном сервере. Эта подпрограмма определяет точное местонахождение каталога. Приведенный в метке I код получает значение CSLID. CSLID определяет специальные каталоги Windows (такие, как «Мои документы», временные файлы Internet). Список значений CSLID можно найти, например, в файле shlobj.h из Windows SDK. Подпрограмма GetSpecialDirectory() вызывает функцию SHGetFolderPath(), определяющую, загружался ли сценарий раньше. Функция GetSpecialDirectory() сначала выделяет буфер (переменная $pszPath) для сохранения имени каталога. Возвращаемое имя файла представлено в кодировке Unicode. Сценарий очищает полученную строку от всех символов с кодом NUL (x00), преобразуя ее тем самым в формат ANSI.

Такое псевдопреобразование из Unicode в ANSI — довольно сомнительный трюк. Если в названии каталога присутствуют символы Unicode (например, русские буквы), то удаление символов с кодом NUL даст неприемлемый результат, и получившийся путь будет ошибочным. Этот трюк применяется в том случае, если используемая версия Perl не поддерживает Unicode и строки UTF-8. Если потребуется, можно переписать эту процедуру для поддержки строк Unicode в Perl.

Выполнение сценария

Если запустить DumpStartups.pl без указания параметров командной строки, сценарий просто выводит на экран список запускаемых элементов с порядковыми номерами. Для удаления определенного элемента следует вновь запустить сценарий с ключом /r и номером удаляемого элемента. Так, для удаления элементов под номерами 3 и 8 достаточно выполнить команду

perl DumpStartups.pl /r 3 /r 8

После удаления элементов порядковые номера могут измениться, поэтому перед повторным запуском сценария для удаления следующих элементов надо запустить его без параметров, для обновления номеров элементов.

голоса
Рейтинг статьи
Ссылка на основную публикацию
Adblock
detector