Сегодня столкнулся с необходимостью добавить в автозагрузчик Windows небольшую утилиту BGInfo. Это небольшая программка может оказаться полезной при необходимости вывода на рабочий стол пользователя всевозможной информации, которая всегда должна быть под рукой, в данном случае перед глазами.
BGInfo по умолчанию имеет множество предопределенных переменных, но при желании их можно пополнить и своими. Значение можно получить из системной переменной, таких как имя пользователя или архитектура процессора. При необходимости иметь на рабочем столе значение системного регистра или выполнить WMI запрос и в дальнейшем отобразить его результат, тоже не составит большого труда. Но самое, на мой взгляд, полезное и удобное - это возможность исполнения VB скриптов и использование свойств файлов.
Дальнейшее излагается исключительно как шпаргалка и не претендует на масштабное и детальное HowTo, но если у кого-то возникнут какие-либо затруднения и сложности, то с радостью отвечу на вопросы в комментариях.
Задача сама по себе тривиальна, но в Windows 8 произошли "небольшие" изменения и я немного растерялся не найдя папки "Автозагрузка" в стандартном Windows меню. В итоге было найдено 2 решения.
Решение первое
Как Вы уже наверное догадались "Автозагрузка" никуда не делась, а просто убрана из стандартного меню. Все что нам нужно сделать для добавления какой-либо программы в автозагрузку , это создать ярлык и поместить его в папку. Сама папка находится в профиле пользователя:%appdata%\Microsoft\Windows\Start Menu\Programs\Startupа в свойствах ярлыка для объекта, после пути к EXE-файлу BGInfo, должен быть прописан относительный путь к конфигурационному файлу bgi
Свойства ярлыка BGInfo |
Решение второе
Второй способ заключается в добавлении задания в планировщике. И здесь есть небольшое, но очень важное отличие. Если в ярлыке мы указывали путь к конфигурационному файлу BGInfo относительно EXE-файла, то при добавлении аргументов мы должны указать абсолютный путь к bgi файлу, не забывая экранировать при этом обратный слеш. Ключ /timer:0 запускает BGIno без задержки, т.е. с задержкой в ноль секунд. Полная строка будет выглядеть примерно так:C:\\BGInfo\\Bginfo.exe C:\\BGInfo\\def.bgi /timer:0
Свойства задачи в планировщике |
Примеры VB скриптов
Перечислить все возможные варианты использования BGInfo просто невозможно, но один пример скрипта я все же напишу.Очень часто возникает необходимость знать публичный IP-адрес выделенный Вам в данный момент времени (так как чаще всего он динамический и меняется каждый день). В переменных BGInfo такого параметра нет и это не удивительно, так как чаще всего для того чтоб его получить, необходимо обратиться к сервису за Вашим роутером, либо напрямую смотреть IP в его настройках. Ниже приведенный скрипт получает IP-адрес с сервиса и возвращает его BGInfo.
OPTION EXPLICIT on error resume next DIM strReturn strReturn = getPublicIP() On Error Resume Next wscript.Echo strReturn 'for cmd line Echo strReturn 'for BGInfo on error goto 0 '=================================================== FUNCTION getPublicIP() ' Alternative services: ' http://myip.dnsomatic.com 386ms ' http://icanhazip.com 161ms ' http://www.dslreports.com/whois 1162ms DIM strURL, strResponse strURL = "http://www.dslreports.com/whois" DIM oXMLHTTP: SET oXMLHTTP = CreateObject("MSXML2.XMLHTTP") call oXMLHTTP.open("GET", strURL, false) on error resume next call oXMLHTTP.send() on error goto 0 strResponse = oXMLHTTP.ResponseText SET oXMLHTTP = nothing 'extract just IP; pattern from: http://www.regexlib.com/REDetails.aspx?regexp_id=1291 DIM oRegExp: SET oRegExp = new RegExp oRegExp.Pattern = "((0|1[0-9]{0,2}|2[0-9]{0,1}|2[0-4][0-9]|25[0-5]|[3-9][0-9]{0,1})\.){3}(0|1[0-9]{0,2}|2[0-9]{0,1}|2[0-4][0-9]|25[0-5]|[3-9][0-9]{0,1})" oRegExp.Global = True IF oRegExp.test(strResponse) THEN strResponse = oRegExp.execute(strResponse)(0) SET oRegExp = nothing getPublicIP = strResponse END FUNCTION
Все что нужно, это сохранить вышеуказанный скрипт с расширением vbs и вызвать его через BGInfo.
Надеюсь, что выше написанное сохранит кому-нибудь нервы или время.
Комментариев нет:
Отправить комментарий