9 июля 2014 г.

BGInfo - вся информация перед глазами


Сегодня столкнулся с необходимостью добавить в автозагрузчик 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.

Надеюсь, что выше написанное сохранит кому-нибудь нервы или время.

Комментариев нет:

Отправить комментарий