SpeedFan – как системный сервис

Несмотря на то, что в багтрекере программы SpeedFan еще с 2005 года открыт тикет на предмет реализации возможности автоматического запуска программы в качестве системной службы, никакого прогресса в данном направлении нет и по сей день. Тем не менее, при помощи сторонних утилит это все-таки возможно.

Подготовка

Поскольку SpeedFan вообще никаким образом не приспособлен для запуска в качестве сервиса, для настройки нам потребуется сторонний софт. В данном случае этот софт не совсем сторонний – программы instsrv.exe и srvany.exe входят в комплект Windows 2003 Resource Kit, доступный на сайте Microsoft.
К сожалению, отдельно они не распространяются и идут лишь комплектом со множеством других утилит. Впрочем, вы можете скачать только необходимые в нашем архиве. Просто распакуйте zip-архив в какой-либо каталог: например, “C:\winsvc”.

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

Утилита instsrv.exe позволяет создать в системном реестре заготовку стандартного пустого системного сервиса. В принципе, все действия данной утилиты воспроизводимы редактированием реестра, но она упрощает задачу. Утилита srvany.exe служит “оберткой”, позволяющей любой программе функционировать как системной службе.
Итак, открываем командную строку (cmd.exe) с правами администратора и пишем:

C:\winsvc\instsrv.exe "SpeedFanSvc" C:\winsvc\srvany.exe

Вместо “SpeedFanSvc” можно подобрать любое другое название для создаваемой службы на свой вкус.

Правка реестра

Обратите внимание, что созданная служба в данный момент ссылается лишь на утилиту srvany.exe, а от SpeedFan она имеет лишь одно название. Теперь пришло время привязать вызов srvany.exe непосредственно к нашей целевой программе. К сожалению, для этого требуется непосредственное редактирование реестра, далее мы идем в редактор реестра (regedit.exe).
Необходимо найти следующий путь:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SpeedFanSvc

В нем создадим новый ключ с именем “Parameters”. Для этого в верхнем меню выберите “Правка” -> “Создать” -> “Раздел” (“Edit” -> “New” -> “Key”). В созданном разделе необходимо создать три новых строковых параметра и задать им значения, аналогичные показанным ниже:

Application => "C:\Program Files (x86)\Tools\SpeedFan\speedfan.exe"
AppDirectory => "C:\Program Files (x86)\Tools\SpeedFan"
AppParameters => /NOSMBSCAN

Указанные пути должны соответствовать месту расположения программы SpeedFan на вашем компьютере. Обратите внимание, что пути обязательно должны быть экранированы кавычками.
Значение “/NOSMBSCAN” в параметре “AppParameters” позволяет отключить один из вариантов сканирования SpeedFan’ом сенсоров, который нередко приводит к проблемам на некоторых компьютерах. При желании, его можно не указывать. С другой стороны, для ускорения загрузки программы можно добавить в данный параметр и другие ключи. К примеру, у меня программа корректно работала и стартовала быстрее при указании ключей “/NOSMBSCAN /NOSUPERIO /NOSMARTSCAN /NOSCSISCAN”. Понятно, что в таком случае, к примеру, будет недоступен к просмотру S.M.A.R.T подключенных винчестеров, но зачем он нам в системной службе?

Включение сервиса

Теперь системная служба создана и готова к запуску. Осталось лишь запустить ее и активировать ее автоматическое включение при каждой загрузке компьютера. Для этого открываем список системных служб – services.msc. В открывшемся перечне отыскиваем службу “SpeedFanSvc”, открываем ее свойства и переводим ее в автоматический режим запуска. Там же ее можно сразу и запустить.

Редактирование настроек SpeedFan

К сожалению, из-за неприспособленности программы SpeedFan к функционированию в качестве системной службы, при работе в режиме сервиса она никак не может взаимодействовать с рабочим столом пользователя – ее просто не будет видно в трее. По этой причине не представляется возможным удобное внесение изменений в настройки программы, да и просто просмотр показаний с сенсоров.
Чтобы внести какие-либо изменения в настройки, нам потребуется заново запустить SpeedFan уже от имени пользователя. Однако, как показывает практика, параллельный запуск двух экземпляров SpeedFan с одним конфигом ни к чему хорошему не приводит, и поэтому для начала системную службу нужно остановить. Для этого можно в командной строке с правами администратора выполнить следующую команду:

net stop SpeedFanSvc

Либо можно остановить сервис и через меню управления службами (services.msc). Затем запускаем программу двойным кликом по speedfan.exe (или его ярлыку). После внесения необходимых изменений в настройки можно оставить программу работать в пользовательском режиме до следующего перезапуска, либо закрыть ее и запустить сервис обратно:

net start SpeedFanSvc

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

Известные проблемы

Из-за особенностей организации работы драйверов видеокарт (в частности AMD ADL), не представляется возможным контролировать скорость вращения кулеров на видеокартах, когда SpeedFan работает как системная служба. С другой стороны, в большинстве случаев это и не требуется – стандартные настройки кулеров в видеокартах зачастую вполне адекватны, в отличие от таковых на материнских платах.

This entry was posted in Разное and tagged , , . Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>