Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка Windows 2000/XP/2003 » Установка темы Windows XP.

Ответить
Настройки темы
Установка темы Windows XP.

Аватара для semiono

Ветеран


Сообщения: 842
Благодарности: 33

Профиль | Отправить PM | Цитировать


Изменения
Автор: semiono
Дата: 16-12-2010
Вложения
Тип файла: zip Blackbox.zip
(23.3 Kb, 9 просмотров)
Иногда нет возможности установить тему-стиль Windows нормальным способом через INF/REG итп, когда это по какой либо причине не срабатывает.
Тогда это можно зделать через консоль desk.cpl автоматически.
Вот код написанный на ассемблере: flat assembler 1.69.29 for Windows
Размер около 85,5 KB

Код: Выделить весь код
include '%fasm%\win32ax.inc'
section '.code' executable
start:
        invoke ExpandEnvironmentStrings,'%WinDir%\Resources\Themes',lpDir,MAX_PATH
        invoke ShellExecute,NULL,NULL,'Blackbox.theme',NULL,lpDir,SW_HIDE

        mov ecx,10
@@:
        invoke FindWindow,'#32770','Display Properties'
        mov [hWnd],eax
        test eax,eax
        jnz @f
        dec ecx
        jz exit
        invoke Sleep,100
        jmp @r
@@:
        invoke SetWindowPos,[hWnd],NULL,-404,24,404,452,SWP_NOZORDER
        invoke SendMessage,[hWnd],WM_COMMAND,(0 shl 16) or IDOK,NULL
exit:
        invoke ExitProcess,NULL

.end start

section '.data' readable writable

        lpDir dd MAX_PATH dup NULL
        hWnd dd NULL
Здесь надо изменить следущее:

%fasm% - расположение папки для распакованного дистрибутива, например: C:\Fasm\Include
Blackbox.theme - имя файла темы.
Display Properties - заголовок окна консоли desk.cpl для русской версии WinXP

--->8---

Для x64 системы, не проверял, но должно работать! Если 'Display Properties' окно по-другому называться не будет.

Код: Выделить весь код
include '%fasm%\win64ax.inc'
section '.code' executable
start:
        sub rsp,8*5

        invoke ExpandEnvironmentStrings,'%WinDir%\Resources\Themes',lpDir,MAX_PATH
        invoke ShellExecute,NULL,NULL,'Blackbox.theme',NULL,lpDir,SW_HIDE

        mov ecx,10
@@:
        invoke FindWindow,'#32770','Display Properties'
        mov [hWnd],eax
        test eax,eax
        jnz @f
        dec ecx
        jz exit
        invoke Sleep,100
        jmp @r
@@:
        invoke SetWindowPos,[hWnd],NULL,-404,24,404,452,SWP_NOZORDER
        invoke SendMessage,[hWnd],WM_COMMAND,(0 shl 16) or IDOK,NULL
exit:
        invoke ExitProcess,NULL

section '.data' readable writable

        lpDir dd MAX_PATH dup NULL
        hWnd dd NULL

section '.idata' import readable

        library kernel32,'KERNEL32.DLL',shell32,'SHELL32.DLL',user32,'USER32.DLL'
        include '%fasm%\api\kernel32.inc'
        include '%fasm%\api\shell32.inc'
        include '%fasm%\api\user32.inc'
Как кампилить: открываем код в Fasmw редакторе и жмём F9.

-------
Полезное сообщение


Отправлено: 23:18, 16-12-2010

 

Аватара для semiono

Ветеран


Сообщения: 842
Благодарности: 33

Профиль | Отправить PM | Цитировать


Можно перед выходом ещё добавить
Код: Выделить весь код
...
        invoke Sleep,450
        invoke FindWindow,'#32770','rundll32.exe - Application Error'
        invoke SendMessage,eax,WM_COMMAND,(0 shl 16) or IDOK,NULL
exit:
Чтобы избавиться от окна - "память не может быть read (written)".

-------
Полезное сообщение


Отправлено: 01:40, 17-12-2010 | #2



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

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


Аватара для semiono

Ветеран


Сообщения: 842
Благодарности: 33

Профиль | Отправить PM | Цитировать


Вложения
Тип файла: zip CloseOpen.zip
(48.0 Kb, 5 просмотров)

Код: Выделить весь код
include '%fasm%\win64ax.inc'
section '.text' executable
start:
        sub rsp,8

        invoke RegOpenKeyEx,HKEY_LOCAL_MACHINE,'Software\Microsoft\Windows NT\CurrentVersion\Winlogon',\
               NULL,KEY_READ,phkResult
        invoke RegQueryValueEx,[phkResult],'shell',NULL,NULL,lpDir,lpcbData
        invoke RegCloseKey,[phkResult]
        invoke PathRemoveFileSpec,lpDir
        
        invoke RegOpenKeyEx,HKEY_LOCAL_MACHINE,'Software\Microsoft\Windows NT\CurrentVersion\Winlogon',\
               NULL,KEY_READ,phkResult
        invoke RegQueryValueEx,[phkResult],'shell',NULL,NULL,lpFile,lpcbData
        invoke RegCloseKey,[phkResult]
        invoke PathStripPath,lpFile

        invoke CreateToolhelp32Snapshot,0fh,NULL
        mov [handle_snap],rax
        mov [pe32.dwSize],sizeof.PROCESSENTRY32

        invoke Process32First,[handle_snap],pe32
        test eax,eax
        jz exit
@@:
        invoke Process32Next,[handle_snap],pe32
        test eax,eax
        jz exit

        invoke lstrcmpi,pe32.szExeFile,lpFile
        test eax,eax
        jnz @r
        invoke OpenProcess,1,NULL,[pe32.th32ProcessID]
        invoke TerminateProcess,eax,NULL
sh:
        invoke ShellExecute,NULL,NULL,lpFile,NULL,lpDir,SW_SHOWNORMAL
exit:
        invoke ExitProcess,NULL

section '.data' readable writeable

        lpDir db MAX_PATH dup NULL
        lpFile db MAX_PATH dup NULL

        lpcbData dq MAX_PATH
        phkResult dq NULL

        handle_snap dq NULL
        handle_proc dd NULL
  
        struct PROCESSENTRY32
        dwSize dd MAX_PATH
        cntUsage dd NULL
        th32ProcessID dq NULL
        th32DefaultHeapID dq NULL
        th32ModuleID dd NULL
        cntThreads dd NULL
        th32ParentProcessID dd NULL
        pcPriClassBase dd NULL
        dwFlags dd NULL
        szExeFile db MAX_PATH dup NULL
        ends

        pe32 PROCESSENTRY32

section '.idata' import readable

        library advapi32,'ADVAPI32.DLL',kernel32,'KERNEL32.DLL',shlwapi,'shlwapi.dll',shell32,'SHELL32.DLL',user32,'USER32.DLL'
        import shlwapi,PathStripPath,'PathStripPathA',PathRemoveFileSpec,'PathRemoveFileSpecA'
        include '%fasm%\api\advapi32.inc'
        include '%fasm%\api\kernel32.inc'
        include '%fasm%\api\shell32.inc'
        include '%fasm%\api\user32.inc'
Код: Выделить весь код
include '%fasm%\win32ax.inc'
section '.text' executable
start:
        invoke RegOpenKeyEx,HKEY_LOCAL_MACHINE,'Software\Microsoft\Windows NT\CurrentVersion\Winlogon',\
               NULL,KEY_READ,phkResult
        invoke RegQueryValueEx,[phkResult],'shell',NULL,NULL,lpDir,lpcbData
        invoke RegCloseKey,[phkResult]
        invoke PathRemoveFileSpec,lpDir
        
        invoke RegOpenKeyEx,HKEY_LOCAL_MACHINE,'Software\Microsoft\Windows NT\CurrentVersion\Winlogon',\
               NULL,KEY_READ,phkResult
        invoke RegQueryValueEx,[phkResult],'shell',NULL,NULL,lpFile,lpcbData
        invoke RegCloseKey,[phkResult]
        invoke PathStripPath,lpFile

        invoke CreateToolhelp32Snapshot,0fh,NULL
        mov [handle_snap],eax
        mov [pe32.dwSize],sizeof.PROCESSENTRY32

        invoke Process32First,[handle_snap],pe32
        test eax,eax
        jz exit
@@:
        invoke Process32Next,[handle_snap],pe32
        test eax,eax
        jz exit

        invoke lstrcmpi,pe32.szExeFile,lpFile
        test eax,eax
        jnz @r
        invoke OpenProcess,1,NULL,[pe32.th32ProcessID]
        invoke TerminateProcess,eax,NULL
sh:
        invoke ShellExecute,NULL,NULL,lpFile,NULL,lpDir,SW_SHOWNORMAL
exit:
        invoke ExitProcess,NULL

section '.data' readable writeable

        lpDir db MAX_PATH dup NULL
        lpFile db MAX_PATH dup NULL

        lpcbData dd MAX_PATH
        phkResult dd NULL

        handle_snap dd NULL
        handle_proc dd NULL
  
        struct PROCESSENTRY32
        dwSize dd MAX_PATH
        cntUsage dd NULL
        th32ProcessID dd NULL
        th32DefaultHeapID dd NULL
        th32ModuleID dd NULL
        cntThreads dd NULL
        th32ParentProcessID dd NULL
        pcPriClassBase dd NULL
        dwFlags dd NULL
        szExeFile db MAX_PATH dup NULL
        ends

        pe32 PROCESSENTRY32

section '.idata' import readable

        library advapi32,'ADVAPI32.DLL',kernel32,'KERNEL32.DLL',shlwapi,'shlwapi.dll',shell32,'SHELL32.DLL',user32,'USER32.DLL'
        import shlwapi,PathStripPath,'PathStripPathA',PathRemoveFileSpec,'PathRemoveFileSpecA'
        include '%fasm%\api\advapi32.inc'
        include '%fasm%\api\kernel32.inc'
        include '%fasm%\api\shell32.inc'
        include '%fasm%\api\user32.inc'
Программа которая выгружает explorer.exe, а потом загружает (x64) & (x86)


Что будет я не знаю, я например использую не explorer.exe оболочку.
Какраз код проверяет то, что установленно чтобы не было проблем.
32битный код я плохо проверил, так как сидел в x64 системе, но через это
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion\Winlogon
проверил запуск калькулятора, вроде бы нормально!


секцию: section '.rsrc' resource readable, в исходнике можно удалить

-------
Полезное сообщение


Последний раз редактировалось semiono, 18-12-2010 в 03:29.

Это сообщение посчитали полезным следующие участники:

Отправлено: 03:19, 18-12-2010 | #3



Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка Windows 2000/XP/2003 » Установка темы Windows XP.

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Темы и Стили - [решено] Установка нужной темы по умолчанию Kuzia Оформление Windows XP 21 26-10-2010 21:50
Интерфейс - Установка темы Windows XP без вызова окошка "Свойства экрана" ethernet Microsoft Windows 2000/XP 1 08-05-2010 20:17
Установка темы .cmd файлам Positiv Автоматическая установка приложений 9 19-02-2007 07:38
Установка классической темы luckystarr Автоматическая установка Windows 2000/XP/2003 9 30-01-2007 09:55




 
Переход