reklama
Aktuality  |  Články  |  Recenze
Doporučení  |  Diskuze
Grafické karty a hry  |  Procesory
Storage a RAM
Monitory  |  Ostatní
Akumulátory, EV
Robotika, AI
Průzkum vesmíru
Digimanie  |  TV Freak  |  Svět mobilně

Změna velikosti open/save dialogů a vypnutí WFP

trodas (1753)|17.2.2008 14:23
Roky mě děsivě štvala a iritovala ta miniaturní verze open/save dialogu v Windowsech, neboť jsem na ně přešel z Amigy a Macu, kde se to dalo nastavit. No uznejte, že je to nepoužitelné:



Jistě, můžete si tento dialog roztáhnout a zvětšit, ale jakmile ho zavřete a zavřete také to okno IE/FF/Opery, tak se vám další dialog otevře zase tak prťavý... :mistake
Dobrá zpráva je, že se to dá změnit. Tady je třeba jeden z mých prvních výsledků:



Špatná je, že to nebude tak jednoduché, jak se na první pohled může zdát. Vlastní změna pomocí programu Resource Hacker je poměrně snadná záležitost - dialogy si prostě normálně myší roztaháte a zpřetaháte jak uznate za vhodné a je to. Nemažte žádné objekty! Windows to sice přežijí, ale části dialogu nebudou viditelné - třeba odmazání tlačítka "Help" způsobí "useknutí" okna a odříznutí všech ovládacích prvků na spodku dialogu, což je, ehm, poněkud nežádoucí výsledek :D

Který soubor otevřít? Dialogy běžně používané všemi Windows aplikacemi (ano, některé pofiderní mají kompletně vlastní dialogy, ty nemyslím a jde o naprosté vyjímky - povětšinou instalace programů) na otevírání a ukládání souborů najdete v comdlg32.dll souboru, kerý si vytáhnete z Windows/System32 adresáře. Tyto dialogy najdete v v sekci "Dialog" pod čísly 1547 a 1552.

Velikosti a rozměry dialogů si nastavte pro své preferované rozlišení, zmáčkněte "Compile Script" nahoře a až budete spokojení, tak si výsledek uložte. Dialog 1547 je bez "Places bar" sekce dialogu, dialog 1552 je s nim. Většinou si lidé "ten nesmysl na boku" vypínají v Tweak UI, pak vám stačí modifikovat jen ten dialog, které nakonec skutečně používáte. Já mám modifikované oba dva :D

Po instalaci, než máte své rozlišení zpět, stačí 2x kliknout na soubor pro jeho otevření v dialogu, či vybrat a zmáčknout enter - nemusíte se bát, že se něco zkazí tím, že se nyní minimální velikost okna nevleze na obrazovku v 800x600 (ci 640x480 pokud si v Win2k nezvysite hned v VGA režimu rozliseni) - pokud chcete mít opravdu VELKÉ dialogy a hned po nové instalaci Win :D

Dialog na výběr adresářů je v shell32.dll knihovně. Nemusíte se modifikace bát, nestabilitu systému o nezpůsobí, ale přeci jen - našlapujte v tom dllku opatrně a neměňte vše, co vám přijde pod ruku. Je sice pravda legrační, změnit v Win spoustu věcí (třeba Storno na Porno a pod :D ) ale "blbněte s mírou" :)
(Dialog 1079 - výběr složky, 1060 - výběr ikonky, 1063, 1070 - výběr programu na otevření fajlu, 1071 - dialog odhlášení, etc. - upozorňuji zejména na možnost změnit či alespon zmenšit nesmyslné animace hned na začátku v položce AVI ;) )

Do této chvíle to byla brnkačka, ale teď přichází WFP (Windows File Protection). WFP se stará o to, aby se kritické soubory systému (skoro všechny) neměnily - ať už činností virů, či podvratných uživatelů. Každý soubor Windows má tedy svůj kontrolní součet a při jeho detekované změně si zkontroluje podle databáze (v souboru sfcfiles.dll) jestli je soubor "platnou bitovou kopii souboru systemu Windows" a kdyz ne, tak se koukne do system32/dllcache jestli tam má soubor jenž je originální. Pokud ano, tak vám modifikovaný soubor v tu ránu přepíše. Pokud soubor nenajde v dllcache, tak vás vyzve k vložení CD s Windowsy.
Zodpovědné soubory za tohle jsou sfc.exe, sfc.dll, sfcfiles.dll a a na XPčkách navíc sfc_os.dll.

Co s tím?
Inu - vypnout. Na Windows 2000 a Win2k SP1 k tomu stačilo do registru vrazit toto:
[QUOTE]REGEDIT4

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon]
"SFCDisable"=dword:0ffffff9dh[/QUOTE]
Jenže doba pokročila a v SP2 a vyšších se Microsoft začal bránit a registrový trik nadále nefunguje. Je zapotřebí pracnějšího přístupu.

U Windows 2000 SP2 - SP4 se patchuje soubor sfc.dll pomocí klasického XVI32 hexa editoru a soubor sfcfiles.dll se nahrazuje prázdným 4k velkým dllkem.

U všech Windows XP se pachuje sfc_os.dll. sfc.dll zůstává a sfcfiles.dll se opět nahrazuje výše linkovaným prázdným 4k dllkem.


Patchování souborů pomocí XVI32 hex editoru.
Chceme-li změnit běh programu, musíme ho upravit. V jeho zkopilované podobě to jde také. Budeme prostě měnit řetězec "83 F8 9D 75 07 8B C6" na "B8 9D FF FF FF 90 90" v sfc.dll či sfc_os.dll v XPčkách. (občas se udává i nedokonalá varianta "83 F8 9D 75 07 90 90" jenž potřebuje podporu v registrech) Jednoduše dáte vyhledat ten řetězec okopírovaný tak jak je z clipboardu a pak ho psaním nahradíte za ten druhý uvedená. Pro kontrolu, řetězec začíná pro Win2k SP4 sfc.dll na adrese 62D6, pro XP SP 1.0a a jejich sfc_os.dll na adrese E3B6 a pro XP SP2 je o jinak. Na netu najdete mnoho návodů, jak na to, třeba:
http://myego.cz/item/vypnuti-ochrany-souboru-ve-windows-xp/category/security
http://www.windowsnetworking.com/articles_tutorials/Tweaking-XP-Windows-File-Protection-SP2.html
...ale ve všech je uvedeno že v sfc_os.dll je na hexa offsetu ECE9 obsah "33 C0 40", což se má změnít na "90 90 90". Drobný problém je, že v sfc_os.dll co mám už je "90 90 90" a tak nevím, jestli už jde o předem upravený soubor, či ne. V případě zklamání použijte tuto utilitku na snadné vypnutí WFP :)
http://fileforum.betanews.com/detail/1106499902/1

Enjoy!

PS. má poslední verze dialogu je takto - nahradíte tím ten text co tam máte a je to:
[CODE]1547 DIALOG 0, 0, 559, 308
STYLE DS_MODALFRAME | DS_CONTEXTHELP | WS_POPUP | WS_VISIBLE | WS_CLIPCHILDREN | WS_CAPTION | WS_SYSMENU
CAPTION "Otevřít"
LANGUAGE LANG_CZECH, 0x1
FONT 8, "MS SHELL DLG"
{
CONTROL "&Otevřít v:", 1091, STATIC, SS_RIGHT | SS_NOTIFY | WS_CHILD | WS_VISIBLE | WS_GROUP, 3, 5, 47, 9
CONTROL "", 1137, COMBOBOX, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | WS_CHILD | WS_VISIBLE | WS_VSCROLL | WS_TABSTOP, 53, 2, 148, 300
CONTROL "", 1088, STATIC, SS_LEFT | WS_CHILD, 203, 2, 88, 16
CONTROL "", 1120, LISTBOX, LBS_NOTIFY | LBS_NOINTEGRALHEIGHT | LBS_MULTICOLUMN | WS_CHILD | WS_BORDER | WS_HSCROLL, 1, 18, 556, 273
CONTROL "&Fajl:", 1090, STATIC, SS_LEFT | SS_NOTIFY | WS_CHILD | WS_VISIBLE | WS_GROUP, 3, 296, 13, 8
CONTROL "", 1152, EDIT, ES_LEFT | ES_AUTOHSCROLL | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP, 17, 293, 155, 12
CONTROL "", 1148, "ComboBoxEx32", 0x50210042, 17, 293, 155, 142
CONTROL "&Typy:", 1089, STATIC, SS_LEFT | SS_NOTIFY | WS_CHILD | WS_VISIBLE | WS_GROUP, 175, 296, 19, 8
CONTROL "", 1136, COMBOBOX, CBS_DROPDOWNLIST | WS_CHILD | WS_VISIBLE | WS_VSCROLL | WS_TABSTOP, 195, 293, 158, 92
CONTROL "J&en číst", 1040, BUTTON, BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 359, 295, 40, 10
CONTROL "&Otevřít", 1, BUTTON, BS_DEFPUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 507, 293, 50, 14
CONTROL "Porno", 2, BUTTON, BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 454, 293, 50, 14
CONTROL "Nápo&věda", 1038, BUTTON, BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 402, 293, 50, 14 [/CODE]