|
Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка Windows 2000/XP/2003 » Установка темы Windows XP. |
|
Установка темы Windows XP.
|
Ветеран Сообщения: 842 |
Иногда нет возможности установить тему-стиль 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' ![]() |
|
------- Отправлено: 23:18, 16-12-2010 |
Ветеран Сообщения: 842
|
Профиль | Отправить PM | Цитировать |
------- Отправлено: 01:40, 17-12-2010 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 842
|
Профиль | Отправить PM | Цитировать
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 оболочку. Какраз код проверяет то, что установленно чтобы не было проблем. 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 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Темы и Стили - [решено] Установка нужной темы по умолчанию | 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 |
|