abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    včera 23:22 | Zajímavý software

    BreadboardOS je firmware pro Raspberry Pi Pico (RP2040) umožňující s tímto MCU komunikovat pomocí řádkového rozhraní (CLI). Využívá FreeRTOS a Microshell.

    Ladislav Hagara | Komentářů: 0
    včera 16:55 | Nová verze

    Vývojáři KDE oznámili vydání balíku aplikací KDE Gear 24.05. Přehled novinek i s náhledy a videi v oficiálním oznámení. Do balíku se dostalo 5 nových aplikací: Audex, Accessibility Inspector, Francis, Kalm a Skladnik.

    Ladislav Hagara | Komentářů: 1
    včera 12:55 | Nová verze

    Byla vydána (𝕏) nová verze 18.0.0 open source webového aplikačního frameworku Angular (Wikipedie). Přehled novinek v příspěvku na blogu.

    Ladislav Hagara | Komentářů: 0
    22.5. 23:44 | Pozvánky

    V neděli 26. května lze navštívit Maker Faire Rychnov nad Kněžnou, festival plný workshopů, interaktivních činností a především nadšených a zvídavých lidí.

    Ladislav Hagara | Komentářů: 0
    22.5. 16:33 | Nová verze

    Byla vydána nová stabilní verze 3.20.0, tj. první z nové řady 3.20, minimalistické linuxové distribuce zaměřené na bezpečnost Alpine Linux (Wikipedie) postavené na standardní knihovně jazyka C musl libc a BusyBoxu. Z novinek lze vypíchnou počáteční podporu 64bitové architektury RISC-V.

    Ladislav Hagara | Komentářů: 0
    22.5. 14:11 | IT novinky

    Společnost Jolla na akci s názvem Jolla Love Day 2 - The Jolla comeback představila telefon se Sailfish OS 5.0 Jolla Community Phone (ve spolupráci se společností Reeder) a počítač Jolla Mind2 Community Edition AI Computer.

    Ladislav Hagara | Komentářů: 5
    22.5. 12:33 | Nová verze

    LibreOffice 24.8 bude vydán jako finální v srpnu 2024, přičemž LibreOffice 24.8 Alpha1 je první předběžnou verzí od začátku vývoje verze 24.8 v prosinci 2023. Od té doby bylo do úložiště kódu odesláno 4448 commitů a více než 667 chyb bylo v Bugzille nastaveno jako opravené. Nové funkce obsažené v této verzi LibreOffice najdete v poznámkách k vydání.

    ZCR | Komentářů: 0
    21.5. 23:33 | Nová verze

    Nová čísla časopisů od nakladatelství Raspberry Pi: MagPi 141 (pdf) a HackSpace 78 (pdf).

    Ladislav Hagara | Komentářů: 0
    21.5. 21:22 | Nová verze

    Byla vydána verze 2.0.0 programovacího jazyka Kotlin (Wikipedie, GitHub). Oficiálně bude představena ve čtvrtek na konferenci KotlinConf 2024 v Kodani. Livestream bude možné sledovat na YouTube.

    Ladislav Hagara | Komentářů: 2
    21.5. 12:55 | Nová verze

    Byla vydána nová major verze 27.0 programovacího jazyka Erlang (Wikipedie) a související platformy OTP (Open Telecom Platform, Wikipedie). Přehled novinek v příspěvku na blogu.

    Ladislav Hagara | Komentářů: 0
    Podle hypotézy Mrtvý Internet mj. tvoří většinu online interakcí boti.
     (82%)
     (4%)
     (7%)
     (7%)
    Celkem 517 hlasů
     Komentářů: 16, poslední 14.5. 11:05
    Rozcestník

    SCRIPT : Jak během vteřiny nastavit (pár stovek) windows ...

    21.2.2012 21:35 | Přečteno: 4561× | windows | poslední úprava: 22.2.2012 07:29

    Jako správný slepovač kódu jsem se své role ujal v nemalém množství a to, co z toho vypadlo, zapřičiní infarkty nemálo lidem :-/

    Inu, všechno začalo tak, že jsem nastoupil do práce. V síti byl novell netware 5.1 a všichni se na něj připojovali. Začal jsem si tedy pohrávat s runscripty netware. Dá se přes ně nastavit dosti věcí, ale ve finále je to stále jen okrajové. Oči mi zazářily, když jsem spatřil v dokumentaci k netware, že umí spouštět i exe soubory :). Začal jsem tedy přemýšlet, jak nato. Nejsem žádný programátor, ani mne programování nebaví, tak jsem si řekl, že se vydám cestou registrů :).


    Ve firmě máme zakoupeno pár licencí na Visual Studio 2005/2008/2010, ale EE verze pro slepovače postačuje :). Po chvilce googlení jsem se dohrabal k ukázkovým zdrojákům pro práci s registry. Po delší době jsem nakonec vzorové příklady tak nějak pochopil, podařilo se mi rozběhat a donutit VS2005EE, aby můj projekt kompiloval staticky. V průběhu času jsem si s pomocí dalších příkladů a dokumentace dopsal funkce pro další práci s registry, jelikož můj prvotní funkční projekt uměl jen zapisovat řetězové hodnoty a hodnoty DWORD.


    Ve zdrojáku mám přes 90 procent klíčů popsaných (mám totiž problémy si zapamatovat, co který klíč v registrech dělá, kdo by také neměl, v takovém množství). Takže ve finále tento projekt také beru jako dokumentaci zajímavých klíčů a hodnot registrů. V projektu jsem samozřejmě použil jen ty klíče, které zde potřebujeme, nebo se prostě hodí, ostatní blbinky jsem zbytečně nepřidával, nebo jsem je zanesl jako komentáře. Také zůstalo v projektu pár dalších starých klíčů, které už třeba nefungují (také je tam nepoužívám), nechal jsem je jen jako zakomentované info :).


    Nu a jakožto neprogramátor jsem to napsal zřejmě asi dosti prasácky :-/. Úmyslně jsem třeba odstranil z projektu všechny výjimky, takže zápis a mazání probíhá stylem : "buď se to tam v těch registrech objeví, nebo ne :P". V otázce binárního zápisu do registrů jsem musel kontaktovat kamaráda, aby pomohl. Chtěl jsem totiž jednoduše vložit do zdrojáku HEX vyexportovaný z registrů do *.reg souboru a ten následně fouknout zpět pomocí projectz.


    Pár featurek z projektu k nakousnutí (abychom věděli, co nás čeká):

    a mnoho dalšího ...


    Myslím si, že v dnešní době nejdu se skriptem (ano, je to psaný jak skript :), tak proto skript ) s křížkem po funuse a ještě se určitě dosti lidem hodí (když né kód, tak seznam klíčů). Na Win7 se chystám, tak uvidíme. Ovšem blíží se doba, kdy se místo Netware nasadí MS FS+AD, tak nebude už ani třeba.

    Projectz, jak jsem ho nazval, se skládá ze dvou souborů a vypadá následovně (u některých komentářů z mého kolouščího mládí se asi dost zasmějete, ale nechám je tam, prostě mi to patří :) ):

    projectz.cpp
    /*
    #########################################################################
    ######### author : Max Devaine                         ##################
    ######### contact : maxdevaine@volny.cz                ##################
    ######### consultant (WriteBinary) : Jiri Nemec        ##################
    #########################################################################
    ######### license : Creative Commons  (by,sa)          ##################
    #########################################################################
    ######### Sources :                                    ##################
    ##    http://www.radekchalupa.cz/clanky/default.aspx?kod=205&obsah=18  ##
    ##    http://msdn.microsoft.com/en-us/library                          ##
    #########################################################################
    */
    
    // TODO :
    // - Implementovat nastavení práv pro některé klíče v registrech (kvůli umožnění uživatelům nastavení režimu spánků apod. věcem) - RegSetKeySecurity Function
    // - Implementovat runas fci na msi instalační shity, na které běžně runas nejde
    
    
    #include "registry_all.h"
    
    int WINAPI _tWinMain(HINSTANCE hInstance,	HINSTANCE hPrevInstance,
    	LPTSTR lpCmdLine, int nCmdShow)
    {
    
    /***** Soubory *****/
    	CopyFile("\\\\192.168.0.1\\InstalaceKlienta\\bcgr\\background.bmp","C:\\windows\\background.bmp",FALSE);	//pozadí při spuštění PC na logovací obrazovce
    	CopyFile("\\\\192.168.0.1\\InstalaceKlienta\\logo\\OEMINFO.INI","C:\\windows\\system32\\OEMINFO.INI",FALSE);	//nakopíruje (nastaví) informace o podpoře ve vlastnostech na "Tento Počítač" -> "Informace o odborné pomoci"
    	CopyFile("\\\\192.168.0.1\\InstalaceKlienta\\logo\\OEMLOGO.BMP","C:\\windows\\system32\\OEMLOGO.BMP",FALSE);	//nakopíruje (nastaví) logo ve vlastnostech na "Tento Počítač"
        //c:\WINDOWS\system32\RunDll32 advpack.dll,LaunchINFSection %windir%\INF\msmsgs.inf,BLC.Remove			//tento příkaz odstraní rychle bez uživ. zásahu messenger, spouštím to v batáku (tady to je jen jako info)...
        //c:\WINDOWS\system32\RUNDLL32 ADVPACK.DLL,LaunchINFSection %windir%\INF\communic.inf,Hypertrm			//instalace Hyperterminalu
    	//c:\WINDOWS\system32\RUNDLL32 ADVPACK.DLL,LaunchINFSection %windir%\INF\communic.inf,HypertrmUninstall		//odinstalace Hyperterminalu
    	CopyFile("\\\\192.168.0.1\\InstalaceKlienta\\fonts\\PF_C128.ttf","C:\\windows\\Fonts\\PF_C128.ttf",FALSE);	//zkopíruje font pro generování čárových kodů
    	CopyFile("\\\\192.168.0.1\\InstalaceKlienta\\fonts\\PF_C39.ttf","C:\\windows\\Fonts\\PF_C39.ttf",FALSE);	//zkopíruje font pro generování čárových kodů
    	AddFontResource("C:\\windows\\Fonts\\PF_C128.ttf");								//nainstaluje font
    	AddFontResource("C:\\windows\\Fonts\\PF_C39.ttf");								//nainstaluje font
    	WriteRegistryFonts();												//instalace fontů pro generování čárového kodu UPDATE:možná to už nejni důležité vzhledem k funkci "AddFontResource"
        //SleepEx(10000,true);												//chvilku počká, položka je na zkoušku, aby bylo vidět, pod jakými právy se proces spouští(zda funguje externí skript na povyšování práv) a zda se vůbec spouští
    
    /***** Prasarna ****/ 
    	//WriteRegistryStartEAK();			//pěkná prasárnička kvůli vypnutí spouštění HPéčkovské utilitky na klávesové zkratky, je to pitomost, ale necham to tu, abych si pripominal, jaky jsem byl vul
    
    /***** Tuning section ****/ 
    	WriteRegistryLPT();				//nastaví LPT timeout na jedničku, čímž by se měl urychlit tisk na lpt port
    	WriteRegistryMasterBrowser();			//vypne snahu win o získání statusu hlavního prohlížeče
    	WriteRegistryNTFSoptimise();			//zapne zaznamenávání času na NTFS posledního přístupu k souboru, zapne podporu dlouhých názvů souborů na FAT, rezervuje větší místo v MFT pro soubory, povolí vytváření krátkých názvů souborů na NTFS kvůli kompatibilitě se starším SW (DOS atd.), vypne funkci pro krátké přípony souborů (kdy např. htm a html je brán jako jeden a ten samý soubor)
    	WriteRegistryNumlock();				//zapne NumLock po naběhnutí win
    	WriteRegistryAsocciations();			//nastaví seznam povolených souborů, u kterých nebude vyskakovat trapný okno, zda opravdu chceme spustit danou aplikaci
    	WriteRegistryAutoTPrinters();			//vypne automatické procházení sítě, které mj. i automaticky nainstaluje různé síťové tiskárny a pak je v tom jenom bordel
    	WriteRegistryStartMenu();			//maže klíč nabídky start a oblíbené(v IE) čímž se po novém startu PC docílí nového sestavení tohoto klíče a tím pádem se nabídky sestaví podle abecedy
    	WriteRegistryStartMenuItems();			//nastavuje položky v menu (jako zobrazit sitova nastevni, tiskárny atd.)
    	WriteRegistryBootOptimise();			//zapne optimilazaci spuštění systému
    	WriteRegistryBSODAutorestart();			//vypne automatický restart pc při BSOD
    	WriteRegistryNoFFconnection();			//No filefolder connection => zakáže automatické propojení síťových souborů a složek (sosneš si webovku, smázneš u ní soubor index.htm a smázne se ti i příslušný adresář, protože jsou propojený)
    	WriteRegistryHiddenFilesPB();			//zakáže zobrazení skrytých a systémových souborů, zakáže obnovu oken, které byly spuštěny před vypnutím systému
    	WriteRegistryHiddenFiles();			//zakáže/povolí zobrazení skrytých souborů na jiném místě (pak nelze změnit nastavení skrytých souborů a jsou natvrdo skryté)
    	WriteRegistryHiddenUser();			//skryje uživatele v login obrazovce
    	WriteRegistryCleanWiz();			//vypne dementního průvodce vyčištěním pracovní plochy
    	//WriteRegistrySleepOFF();			//vypne šetřič obrazovky a zakáže vypnutí monitoru
    	WriteRegistryPersistent();			//nastaví automatické ukládání nastavení připojených síťových jednotek
    	WriteRegistryBkgr();				//nastaví barvu pozadí, když je barva pozadí tmavá, tak jsou popisky ikon bílé a když je pozadí světlé, tak jsou popisky černé. Toto automatické MS nastavování barvy je fakt skvělý :(. Zatím jsem nepřišel, jak ručně zvolit barvu popisku (ale myslím, že to jednoduše nepůjde, koukal jsem do registrů a barvu popisků to zřejmě bere z barvy onoho pozadí, které se skládá asi ze třech čísel (barev))
    	WriteRegistryBkgrDef();				//nastaví defaultní barvu pozadí
    	WriteRegistryDiskSpaceCheck();			//zapne kontrolu volného místa na disku (ve firmě, nebo u méně znalých uživatelů je to lepší)
    	//WriteRegistryLinkIgnoreHKCU();		//zakáže vyhledávání síťových zástupců
    	//WriteRegistryLinkIgnoreHKLM();		//zakáže vyhledávání síťových zástupců
    	WriteRegistryPrefetch();			//vypne Prefetch
    	WriteRegistryAutoChkdsk();			//nastaví timeout pro autochkdisk
    	WriteRegistryAClearPGfile();			//nastaví, aby se při vypnutí PC nečistil stránkovací soubor (kvůli rychlosti, na přehnanou bezpečnost sere pes a uživatelé piskovaly kvůli pomalosti :-/)
    	//WriteRegistryBgr();				//nastavení obrázku na pozadí na prac. ploše (raději nenastavovat, uživatelé by mne asi zabili :D )
    	WriteRegistryBgrDef();				//nastavení obrázku na pozadí při přihlášení (Defualt pro new usera)
    	WriteRegistryIEprint();				//nastaví 100procentní velikost v náhledu při tisku pomocí IE sráče
    	WriteRegistryProxy();				//nastaví proxy v IE, resp. ve win včetne výjimek atd.
    	WriteRegistryCmdHere();				//přidá do pravého tl. myši (když se tukne na diskovou jednotku, složku, nebo soubor,
    	WriteRegistryCmdHere2();			//položku cmdhere, která otevře konzoli v daném umístění
    	WriteRegistryCmdHereFolder();
    	WriteRegistryCmdHereFolder2();
    	//WriteRegistryCmdUNC();			//povoli unc cesty v prikazove radce cmd
    	WriteRegistryDisableTour();			//vypne zobrazování průvodce po nainstalování windows
    	WriteRegistryTaskmgr();				//nastavení správce úloh
        WriteRegistryCMD();					//nastaveni velikosti, barvy apod. cmd prikazovy radky
        WriteRegistryNTPClient();				//nastaveni synchronizace casu pomoci ntp clienta (na nas vlastni ntp server)
    	WriteRegistryNTPClientSVC();			//samotné nastavení služby
    	WriteRegistryNTPClientSRVLST();			//seznam ntp serveru pro synchronizaci casu na stanicich
        WriteRegistryDNSSuffix();				//nastavit dns suffix pro automaticke doplnovani nazvu domeny
    	WriteRegistryTNS();				// Nastavit promenou prostredi pro cestu k oracle tnsnames.ora a sqlnet.ora
    
    
    	/*** RISK ***/
    	//WriteRegistrySpeedShutdown1();		//zapne volbu automatického ukončení úlohy, zkrátí čas automatického čekání aplikace na 100, zkrátí čekací dobu na killnutí aplikace na 1000
    	//WriteRegistrySpeedShutdown2();		//zkrátí čekací čas na killnutí služby na 1000
    	//WriteRegistryCacheOpt();			//vypne stránkování do souboru a nastaví default velikost pro praci s L2 cache na proc.
    	//WriteRegistryForceDLL();			//zapne unloading dll, from memory  (zatím nefunkční)
    
    	//WriteRegistryStartMenuTuning();
    	//WriteRegistryIETuning();
    	//WriteRegistryMRXSmb();
    	//WriteRegistryIEscapi();
    	//WriteRegistrySessionManager();
    	//WriteRegistrySMBCR1();
    	//WriteRegistrySMBCR2();
    	//WriteRegistrySMBCR3();
    
    
    /***** Security section ****/	
    	WriteRegistryOle();				//Nastaví práva pro DCOM pozorně si to promyslete, tohle taky odpálí dost SW na vistách, na nich to rozhodně nepoužívat a na winxp bey s SP, nebo s SP1 take ne
    	WriteRegistryRemoteAdminSettings();		//povolí vzdálené připojení přes firewall
    	WriteRegistryForceGuest();			//nastaví ověřování uživatelů na sebe sama, tato hodnota je propojena s položkou : "Použít zjednodušené sdílení souborů (doporučeno)"
    
    /***** WinXP firewall section ****/
    	//WriteRegistryFWPolicy();			//zapnutí firewallu, povolení výjimek
    
    
    /***** WSUS winxp section ****/
    	WriteRegistryWSUS();				//nastaví WSUS server na náš předdefinovaný
    	WriteRegistryWSUS_Enable();			//povolí stahování aktualizací z WSUS serveru a provede patřičná nastavení
    
    
    
    
    /***** Services section *****/
    	WriteRegistryJQS();				//vypnout službu JavaQuickStarter - je to pěkná sviňárna, ta služba je schopná za pár hodin přečíst 2GB dat, i více, což má dopad na výkon pomalejších PC
    //	WriteRegistrystisvc();				//Načítání obrázků (WIA) => zakázat
    	WriteRegistryCiSvc();				//Indexing Service	 => rucne
    	WriteRegistryMessenger();			//Kurýrní služba => zakázat
    	WriteRegistryClipSrv();				//Síťová schránka => zakázat
    	WriteRegistryhelpsvc();				//Nápověda a odborná pomoc => automaticky
    	WriteRegistryTlntSvr();				//Telnet => zakázat
    	WriteRegistryRemoteRegistry();			//Vzdálený registr => automaticky
    	WriteRegistryEventlog();			//Protokol událostí => automaticky
    	WriteRegistryERSvc();				//Zasílání zpráv o chybách => automaticky
    	WriteRegistrymnmsrvc();				//NetMeeting - Vzdálené sdílení plochy => zakázat
    	WriteRegistrySENS();				//Oznamování systémových událostí => automaticky
    	WriteRegistrywuauserv();			//Automatické aktualizace => automaticky
    	WriteRegistryupnphost();			//Hostitel zařízení UPnP => zakázat
    	WriteRegistryNla();				//Sledování umístění v síti (NLA) => ručně (default = ručně)
    	WriteRegistryALG();				//Služba brány aplikačního rozhraní => ručně (default = ručně) 
    	WriteRegistryNetDDE();				//Služba DDE v síti => zakázat (default = zakázáno)
    	WriteRegistryNetDDEdsdm();			//Správce DSDM služby DDE v síti => zakázat (default = zakázáno)
    	WriteRegistryRemoteAccess();			//Směrování a vzdálený přístup => zakázat (default = zakázáno)
    	WriteRegistryRDSessMgr();			//Správce relací nápovědy ke vzdálené ploše => ručně (default = ručně)
        WriteRegistryBrowser();				//Prohledávání počítačů => automaticky (default = automaticky)
        WriteRegistryTermService();				//Terminálová služba => automaticky (default = ručně) //serou se bez hoto programy(např. StartEAK = "nastavení multimediální klávesnice" vyletí s CPU na 100%) od HP a scanery a možná ještě něco, musí zůstat ve stavu ručně
    
    	/*
    	WriteRegistryVSS();				//Stínová kopie svazku
    	WriteRegistryAppMgmt();				//Správa aplikací
    	WriteRegistryAudioSrv();			//Zvuk systému Windows
    	WriteRegistryBITS();				//Služba inteligentního přenosu na pozadí
    	WriteRegistryCOMSysApp();			//Systémové aplikace modelu COM+
    	WriteRegistryCryptSvc();			//Šifrování
    	WriteRegistryDcomLaunch();			//Spouštěč procesů serveru DCOM
    	WriteRegistryDhcp();				//Klient DHCP
    	WriteRegistrydmadmin();				//Služba správy pro Správce logických disků
    	WriteRegistrydmserver();			//Správce logických disků
    	WriteRegistryDnscache();			//Klient DNS
    	WriteRegistryEventSystem();			//Systém událostí modelu COM+
    	WriteRegistryFUSC();				//Kompatibilita pro rychlé přepínání uživatelů
    	WriteRegistryHidServ();				//Přístup k zařízením standardu HID
    	WriteRegistryHTTP();				//HTTP
    	WriteRegistryHTTPFilter();			//HTTP SSL
    	WriteRegistryImapiService();			//Služba modelu COM pro zápis na disk CD (IMAPI)
    	WriteRegistryIp6Fw();				//Ovladač IPv6 brány firewall systému Windows
    	WriteRegistrylanmanserver();			//Server
    	WriteRegistrylanmanworkstation();		//Pracovní stanice
    	WriteRegistryLmHosts();				//Podpora rozhraní NetBIOS nad protokolem TCP/IP
    	WriteRegistryLPDSVC();				//Tiskový server TCP/IP
    	WriteRegistryMRxDAV();				//Přesměrovač klienta WebDav
    	WriteRegistryMSDTC();				//Koordinátor DTC
    	WriteRegistryMSIServer();			//Windows Installer
    	WriteRegistryNetBIOS();				//Rozhraní NetBIOS
    	WriteRegistryNetBT();				//Rozhraní NetBios nad protokolem TCP/IP
    	WriteRegistryNetlogon();			//Přihlašování k síti
    	WriteRegistryNetman();				//Síťová připojení
    	WriteRegistryNtLmSsp();				//Zprostředkovatel zabezpečení NT LM
    	WriteRegistryNtmsSvc();				//Vyměnitelné úložiště
    	WriteRegistryPlugPlay();			//Plug and Play
    	WriteRegistryPolicyAgent();			//Služby IPSEC
    	WriteRegistryProtectedStorage();		//Chráněné úložiště
    	WriteRegistryPSched();				//Plánovač paketů technologie QoS
    	WriteRegistryRpcLocator();			//Lokátor vzdáleného volání procedur (RPC)
    	WriteRegistryRpcSs();				//Vzdálené volání procedur (RPC)
    	WriteRegistryRSVP();				//QoS RSVP
    	WriteRegistrySamSs();				//Správce zabezpečení účtů
    	WriteRegistryseclogon();			//Sekundární přihlašování
    	WriteRegistrySharedAccess();			//Brána Firewall / Sdílení připojení k Internetu (ICS)
    	WriteRegistryShellHWDetection();		//Rozpoznávání hardwaru
    	WriteRegistrySchedule();			//Plánovač úloh
    	WriteRegistrySpooler();				//Zařazování tisku
    	WriteRegistrysrservice();			//Služba obnovení systému
    	WriteRegistrySysmonLog();			//Výstrahy a protokolování výkonu
    	WriteRegistryTapiSrv();				//Telefonní subsystém
    	WriteRegistryTcpip();				//Ovladač protokolu TCP/IP
    	WriteRegistryTcpip6();				//Ovladač protokolu Microsoft IPv6
    	WriteRegistryThemes();				//Motivy
    	WriteRegistryTrkWks();				//Klient služby sledování distribuovaných propojení
    	WriteRegistryW32Time();				//Systémový čas
    	WriteRegistryWanarp();				//Ovladač Remote Access IP ARP
    	WriteRegistryWebClient();			//Webový klient
    	WriteRegistrywinmgmt();				//Služba WMI
    	WriteRegistryWmi();				//Rozšíření ovladače WMI
    	WriteRegistryWmiAcpi();				//Microsoft Windows Management Interface for ACPI
    	WriteRegistryWmiApSrv();			//Adaptér výkonu služby WMI
    	WriteRegistryWMPNetworkSvc();			//Služba Windows Media Player Network Sharing
    	WriteRegistrywscsvc();				//Centrum zabezpečení
    	WriteRegistryWSearch();				//Vyhledávání systému Windows
    	WriteRegistryWZCSVC();				//Automatická konfigurace bezdrátových zařízení
    	WriteRegistryxmlprov();				//Služba pro síťová ustanovení
    */
    
    }
    
    registry_all.h
    /*
    #########################################################################
    ######### author : Max Devaine                         ##################
    ######### contact : maxdevaine@volny.cz                ##################
    ######### consultant (WriteBinary) : Jiri Nemec        ##################
    #########################################################################
    ######### license : Creative Commons  (by,sa)          ##################
    #########################################################################
    ######### Sources :                                    ##################
    ##    http://www.radekchalupa.cz/clanky/default.aspx?kod=205&obsah=18  ##
    ##    http://msdn.microsoft.com/en-us/library                          ##
    #########################################################################
    */
    
    #include <windows.h>
    #include <stdio.h>
    #include <tchar.h>
    
    HINSTANCE g_hInst;
    HWND g_hWnd;
    
    TCHAR chInfoText[150];
    
    /****************************************************************************************/
    /********************** Funkce pro práci s registry *************************************/
    /****************************************************************************************/
    
    //#define REGISTRY_NAME HKEY_LOCAL_MACHINE
    
    /**HKEY_LOCAL_MACHINE**/
    HKEY registry_OpenKeyHKLM(LPCTSTR lpKeyName, LPBOOL lpbCreated)
    {
    	DWORD dwDisp = 0;
    	HKEY hkResult = NULL;
    	if ( RegCreateKeyEx(HKEY_LOCAL_MACHINE, lpKeyName, 0, NULL, REG_OPTION_NON_VOLATILE,
    		KEY_ALL_ACCESS, NULL, &hkResult, &dwDisp) != ERROR_SUCCESS )
    		return NULL;
    	if ( lpbCreated )
    		*lpbCreated = ( dwDisp & REG_CREATED_NEW_KEY );
    	return hkResult;
    }
    
    /**HKEY_CURRENT_USER**/
    HKEY registry_OpenKeyHKCU(LPCTSTR lpKeyName, LPBOOL lpbCreated)
    {
    	DWORD dwDisp = 0;
    	HKEY hkResult = NULL;
    	if ( RegCreateKeyEx(HKEY_CURRENT_USER, lpKeyName, 0, NULL, REG_OPTION_NON_VOLATILE,
    		KEY_ALL_ACCESS, NULL, &hkResult, &dwDisp) != ERROR_SUCCESS )
    		return NULL;
    	if ( lpbCreated )
    		*lpbCreated = ( dwDisp & REG_CREATED_NEW_KEY );
    	return hkResult;
    }
    
    /**HKEY_USER**/
    HKEY registry_OpenKeyHKU(LPCTSTR lpKeyName, LPBOOL lpbCreated)
    {
    	DWORD dwDisp = 0;
    	HKEY hkResult = NULL;
    	if ( RegCreateKeyEx(HKEY_USERS, lpKeyName, 0, NULL, REG_OPTION_NON_VOLATILE,
    		KEY_ALL_ACCESS, NULL, &hkResult, &dwDisp) != ERROR_SUCCESS )
    		return NULL;
    	if ( lpbCreated )
    		*lpbCreated = ( dwDisp & REG_CREATED_NEW_KEY );
    	return hkResult;
    }
    
    
    /**HKEY_CLASSES_ROOT**/
    HKEY registry_OpenKeyHKCR(LPCTSTR lpKeyName, LPBOOL lpbCreated)
    {
    	DWORD dwDisp = 0;
    	HKEY hkResult = NULL;
    	if ( RegCreateKeyEx(HKEY_CLASSES_ROOT, lpKeyName, 0, NULL, REG_OPTION_NON_VOLATILE,
    		KEY_ALL_ACCESS, NULL, &hkResult, &dwDisp) != ERROR_SUCCESS )
    		return NULL;
    	if ( lpbCreated )
    		*lpbCreated = ( dwDisp & REG_CREATED_NEW_KEY );
    	return hkResult;
    }
    
    
    BOOL registry_CloseKey(HKEY hKey)
    {
    	return ( RegCloseKey(hKey) == ERROR_SUCCESS);
    }
    
    BOOL registry_WriteDWORD(HKEY hKey, LPCTSTR lpValueName, DWORD dwValue)
    {
    	return  ( RegSetValueEx(hKey, lpValueName, 0, REG_DWORD,
    		(CONST BYTE*)&dwValue, sizeof(DWORD)) == ERROR_SUCCESS );
    }
    
    
    BOOL registry_WriteString(HKEY hKey, LPCTSTR lpValueName, LPCTSTR lpText)
    {
    	return ( RegSetValueEx(hKey, lpValueName, 0, REG_SZ, (CONST BYTE*)lpText,
    		(lstrlen(lpText)+1)*sizeof(TCHAR)) ==	ERROR_SUCCESS );
    }
    
    
    BOOL registry_DeleteValue(HKEY hKey, LPCTSTR lpValueName)
    {
    return ( RegDeleteValue(hKey, lpValueName ) ==	ERROR_SUCCESS );
    }
    
    
    DWORD registry_DeleteKey(HKEY hStartKey , LPTSTR pKeyName )
       {
          DWORD   dwRtn, dwSubKeyLength;
          LPTSTR  pSubKey = NULL;
          TCHAR   szSubKey[256]; // (256) this should be dynamic.
          HKEY    hKey;
    
          // Do not allow NULL or empty key name
          if ( pKeyName &&  lstrlen(pKeyName))
          {
             if( (dwRtn=RegOpenKeyEx(hStartKey,pKeyName,
                0, KEY_ENUMERATE_SUB_KEYS | DELETE, &hKey )) == ERROR_SUCCESS)
             {
                while (dwRtn == ERROR_SUCCESS )
                {
                   dwSubKeyLength = 256;
                   dwRtn=RegEnumKeyEx(
                                  hKey,
                                  0,       // always index zero
                                  szSubKey,
                                  &dwSubKeyLength,
                                  NULL,
                                  NULL,
                                  NULL,
                                  NULL
                                );
    
                   if(dwRtn == ERROR_NO_MORE_ITEMS)
                   {
                      dwRtn = RegDeleteKey(hStartKey, pKeyName);
                      break;
                   }
                   else if(dwRtn == ERROR_SUCCESS)
                      dwRtn=registry_DeleteKey(hKey, szSubKey);
                }
                RegCloseKey(hKey);
                // Do not save return code because error
                // has already occurred
             }
          }
          else
             dwRtn = ERROR_BADKEY;
    
          return dwRtn;
       }
    
    
    /****  Binarni zapis do registru :  *****/
    
    BOOL registry_WriteBinary(HKEY hKey, LPCTSTR lpValueName, char * lpText, int delka)
    {
     return RegSetValueEx(hKey, lpValueName, 0, REG_BINARY, (CONST BYTE*) lpText,delka);
    }
    
    
    /****  Nastavit práva na klíči a všech podklíčích :  *****/
    
    
    
    
    /****************************************************************************************/
    /*********************** Zápis do registrů **********************************************/
    /****************************************************************************************/
    
    
    /* Nastavit promenou prostredi pro cestu k oracle tnsnames.ora a sqlnet.ora*/
    BOOL WriteRegistryTNS()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKCU("Environment", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteString(hKey, TEXT("TNS_ADMIN"), "G:\\new_is\\TNS_ADMIN") )
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    
    
    
    /* Nastavit dns suffix*/
    /* Mame firemni web server : intranet.firma.local, ale chci, aby uzivatele zadali jen adresu "intranet" a nemuseli se pitvorit s nazvem domeny. 
       Od toho je dns suffix, ktery za adresu automaticky doplni nami zvolenou domenu. 
       Standardne doplnuje suffix jen v pripade, ze je PC zapojeno v domene, pokud v ni neni, tak si to musime takto obejit  */
    
    BOOL WriteRegistryDNSSuffix()
    
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKLM("SYSTEM\\CurrentControlSet\\Services\\Tcpip\\\\Parameters", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteString(hKey, TEXT("Domain"), "devaine.local") )
    		bRes = FALSE;
    	if ( !registry_WriteString(hKey, TEXT("SearchList"), "devaine.local") )
    		bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    
    
    
    /* Nastavení NTP klienta ve windows na synchronizaci casu*/
    
    BOOL WriteRegistryNTPClientSRVLST()
    
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKLM("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\DateTime\\Servers", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteString(hKey, TEXT("1"), "ntp.devaine.local") )
    		bRes = FALSE;
    	if ( !registry_WriteString(hKey, TEXT("2"), "ntp2.devaine.local") )
    		bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    BOOL WriteRegistryNTPClient()
    
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKLM("SYSTEM\\CurrentControlSet\\Services\\W32Time\\Parameters", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteString(hKey, TEXT("NtpServer"), "ntp.devaine.local,0x1") )
    		bRes = FALSE;
    	if ( !registry_WriteString(hKey, TEXT("Type"), "NTP") )
    		bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    
    BOOL WriteRegistryNTPClientSVC()
    
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKLM("SYSTEM\\CurrentControlSet\\Services\\W32Time\\TimeProviders\\NtpClient", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("AllowNonstandardModeCombinations"), 1) )
    		bRes = FALSE;
        if ( !registry_WriteDWORD(hKey, TEXT("CrossSiteSyncFlags"), 2) )
    		bRes = FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("Enabled"), 1) )
    		bRes = FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("SpecialPollInterval"), 900) )
    		bRes = FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("EventLogFlags"), 0) )
    		bRes = FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("InputProvider"), 1) )
    		bRes = FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("ResolvePeerBackoffMaxTimes"), 7) )
    		bRes = FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("ResolvePeerBackoffMinutes"), 15) )
    		bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    
    
    /* Nastaveni taskmanageru, sloupce, rozlozeni okna atd. */
    BOOL WriteRegistryTaskmgr()
    {
    	// v poli jsou HEX znaky tak, jak se vyexportuji do *.reg souboru, pomoci pspadu je pak format HEX z 
    	// *.reg souboru upraven do nasledujici podoby, kdy jsou odstraneny mezery, carky, lomitka, nove radky a 
    	// pred vsechny HEX znaky je pridano "\x" znacici, ze jde o HEX :)
    	char pole[] = "\x9c\x02\x00\x00\xe8\x03\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x0a\x00\x00\x00\x0a\x00\x00\x00\x5d\x03\x00\x00\x03\x03\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00\x04\x00\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\x00\x60\x00\x3c\x00\x60\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
    xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x06\x00\x00\x00\x16\x00\x00\x00\x17\x00\x00\x00\xff\xff\xff\xff\x02\x00\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x9e\x00\x00\x00\x32\x00\x00\x00\x6b\x00\x00\x00\x39\x00\x00\x00\x23\x00\x00\x00\x43\x00\x00\x00\x52\x00\x00\x00\x76\x00\x00\x00\x72\x00\x00\x00\x6b\x00\x00\x00\x6b\x00\x00\x00\x6b\x00\x00\x00\x6b\x00\x00\x00\x6b\x00\x00\x00\x6b\x00\x00\x00\x6b\x00\x00\
    x00\x6b\x00\x00\x00\x6b\x00\x00\x00\x6b\x00\x00\x00\x6b\x00\x00\x00\x6b\x00\x00\x00\x6b\x00\x00\x00\x6b\x00\x00\x00\x6b\x00\x00\x00\x6b\x00\x00\x00\x6b\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x06\x00\x00\x00\x07\x00\x00\x00\x08\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x47\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00";
    
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKCU("Software\\Microsoft\\Windows NT\\CurrentVersion\\TaskManager", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteBinary(hKey,"Preferences", pole, (sizeof(pole)-1)))
    		bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    /* Nastaveni cmd shellu, barva pozadi, barva pisma, rozmery, historie atd. */
    
    BOOL WriteRegistryCMD()
    
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKCU("Console\\%SystemRoot%_system32_cmd.exe", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("QuickEdit"), 1) )		//zapne rezim rychlych uprav
        bRes = FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("ScreenBufferSize"), 196608100) )	//nastavi velikost historie (kolik radku si to bude pamatovat)
        bRes = FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("ScreenColors"), 113) )  //barva pisma a pozadi
        bRes = FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("WindowSize"), 3276900) )	//velikost okna
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    /*********************** Permission DCOM section ****************************************/
    
    
    BOOL WriteRegistryOle()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKLM("SOFTWARE\\Microsoft\\Ole", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_DeleteValue(hKey, TEXT("MachineLaunchRestriction")) ) //zabijácká věc, jen na vlastní triko !!! / ok, u winxp SP2 je to ok, u SP1 to myslím dělá drobné problémy s právy a na vistách bych to opravdu nedělal :)
        bRes = FALSE;
    	if ( !registry_DeleteValue(hKey, TEXT("MachineAccessRestriction")) ) //zabijácká věc, jen na vlastní triko !!! / ok, u winxp SP2 je to ok, u SP1 to myslím dělá drobné problémy s právy a na vistách bych to opravdu nedělal :)
        bRes = FALSE;
    	if ( !registry_DeleteValue(hKey, TEXT("DefaultLaunchPermission")) ) //zabijácká věc, jen na vlastní triko !!! / ok, u winxp SP2 je to ok, u SP1 to myslím dělá drobné problémy s právy a na vistách bych to opravdu nedělal :)
        bRes = FALSE;
    	if ( !registry_WriteString(hKey, TEXT("EnableDCOM"), "Y") )
    		bRes = FALSE;
    	if ( !registry_WriteString(hKey, TEXT("EnableRemoteConnect"), "Y") )
    		bRes = FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("LegacyAuthenticationLevel"), 1) )
    		bRes = FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("LegacyImpersonationLevel"), 2) )
    		bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    
    BOOL WriteRegistryRemoteAdminSettings()
    
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKLM("SYSTEM\\CurrentControlSet\\Services\\SharedAccess\\Parameters\\FirewallPolicy\\StandardProfile\\RemoteAdminSettings", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("enabled"), 1) )		//povolí vzdálený přístup na PC
        bRes = FALSE;
    	if ( !registry_WriteString(hKey, TEXT("RemoteAddresses"), "*") )	//povolí vzdálený přístup na PC ze "*" = všech sítí, "localsubnet" = jen z lokální sítě
    		bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    BOOL WriteRegistryForceGuest()
    
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKLM("SYSTEM\\CurrentControlSet\\Control\\Lsa", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("forceguest"), 0) )    //0=uživatelé se ověřují jako oni sami; 1= uživatelé jsou ověřování jako guest; tato hodnota je propojena s klikací položkou : "Použít zjednodušené sdílení souborů (doporučeno)", takže opravdu geniální propojení, chjo :(
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    
    /*********************** Win XP firewall section ****************************************/
    
    BOOL WriteRegistryFWPolicy()
    
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKLM("SYSTEM\\CurrentControlSet\\Services\\SharedAccess\\Parameters\\FirewallPolicy\\StandardProfile", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("EnableFirewall"), 1) )		//zapne win firewall v xp SP2
        bRes = FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("DisableNotifications"), 1) )	
        bRes = FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("DoNotAllowExceptions"), 0) )  //povolí výjimky ve firewallu
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    
    /*********************** Win XP WSUS section ****************************************/
    
    BOOL WriteRegistryWSUS()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKLM("SOFTWARE\\Policies\\Microsoft\\Windows\\WindowsUpdate", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteString(hKey, TEXT("WUServer"), "http://wsusserver:8530") )
        bRes = FALSE;
    	if ( !registry_WriteString(hKey, TEXT("WUStatusServer"), "http://wsusserver:8530") )
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    BOOL WriteRegistryWSUS_Enable()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKLM("SOFTWARE\\Policies\\Microsoft\\Windows\\WindowsUpdate\\AU", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("UseWUServer"), 1) )		// 1 = použít pro aktualizaci WSUS, 0 = použít pro aktualizaci windows update
        bRes = FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("NoAutoUpdate"), 0) )		// 0 = aktualizace jsou povoleny, 1 = zakazany
        bRes = FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("AUOptions"), 4) )			// 3= automaticky sosat a pak se zeptat na instalaci, 4 = automaticky stahnout a automaticky nainstalovat v naplanovany cas
        bRes = FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("ScheduledInstallDay"), 0) )	// 0 = denně, 1-7 se definuji jednotlive dny	
        bRes = FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("ScheduledInstallTime"), 12) )	  // ve 12 hod. dopoledne by se mela spustit instalace aktualizaci		
        bRes = FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("NoAutoRebootWithLoggedOnUsers"), 1) )			// 1 = zákaz automatických restartů	
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    
    /*********************** Proxy section (kvůli Exchange OWA) ****************************************/
    
    BOOL WriteRegistryProxy()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKCU("Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings", NULL);
    	if ( !hKey )
    		return FALSE;
    	//if ( !registry_WriteDWORD(hKey, TEXT("ProxyEnable"), 1) )	  // povolit proxy
        //bRes = FALSE;
    	if ( !registry_WriteString(hKey, TEXT("ProxyOverride"), "*devaine.local;http://exchange") )		//výjimky na proxyně (prostě adresy, které nemají jít přes proxy, třeba nějaké lokální atd.), oddělují se středníkem
        bRes = FALSE;
    	//if ( !registry_WriteString(hKey, TEXT("ProxyServer"), "172.25.156.90:3128") )	//ip adresa proxyny včetně čísla portu
        //bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    
    
    
    
    
    /*********************** Fuj section ****************************************/
    
    BOOL WriteRegistryStartEAK()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKLM("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_DeleteValue(hKey, TEXT("CPQEASYACC")) ) //Po mé tuningové úpravě ve službách se tento proces(mapování klávesnice od HP) zbláznil a žere 100% CPU (stejně je to na hovno SW :) ), UPDATE: tak jsem zjistil, že vyžaduje k životu službu terminal services
    		bRes = FALSE;
    	return bRes;
    }
    
    
    
    
    /*********************** Tuning section ****************************************/
    
    
    BOOL WriteRegistryLPT()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKLM("SYSTEM\\CurrentControlSet\\Control\\WOW", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteString(hKey, TEXT("LPT_timeout"), "1") )		// číslo je v sekundách
    		bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    BOOL WriteRegistryStartMenuTuning()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKCU("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer", NULL);
    	if ( !hKey )
    		return FALSE;
        if ( !registry_WriteDWORD(hKey, TEXT("MemCheckBoxInRunDlg"), 1) )		// Přidat zaškrtávací políčko „Spouštět ve vyhrazeném paměťovém prostoru“ do dialogového okna Spustit Popis: Umožní spuštění 16bitových programů ve vyhrazeném procesu VDM (Virtual DOS Machine)
        bRes = FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("NoChangeStartMenu"), 0) )		// Zabrání uživateli měnit nabídku Start pomocí přetahování položek, UPDATE: je to nahovno, neumožní to vůbec kliknout pravým tl. na ikonky v nabídce start :(, takze vypinam tuto moznost
        bRes = FALSE;
    	//if ( !registry_WriteDWORD(hKey, TEXT("NoInstrumentation"), 1) )		// Zabrání systému pamatovat si spuštěné programy, procházené cesty a použité dokumenty
        //bRes = FALSE;
    	//if ( !registry_WriteDWORD(hKey, TEXT("NoSimpleStartMenu"), 1) )		// Vynutit klasickou nabídku Start
        //bRes = FALSE;
    	//if ( !registry_WriteDWORD(hKey, TEXT("DisableMyPicturesDirChange"), 1) )		// Zabránit uživateli změnit cestu k uživatelským složkám
        //bRes = FALSE;
    	//if ( !registry_WriteDWORD(hKey, TEXT("DisableMyMusicDirChange"), 1) )		// Zabránit uživateli změnit cestu k uživatelským složkám
        //bRes = FALSE;
    	//if ( !registry_WriteDWORD(hKey, TEXT("DisableFavoritesDirChange"), 1) )		// Zabránit uživateli změnit cestu k uživatelským složkám
        //bRes = FALSE;
    	//if ( !registry_WriteDWORD(hKey, TEXT("DisablePersonalDirChange"), 1) )		// Zabránit uživateli změnit cestu k uživatelským složkám
        //bRes = FALSE;
    	//if ( !registry_WriteDWORD(hKey, TEXT("NoRecentDocsMenu"), 1) )		// Odebrat položku Poslední dokumenty z nabídky Start
        //bRes = FALSE;
    	//if ( !registry_WriteDWORD(hKey, TEXT("ClearRecentDocsOnExit"), 1) )		// Při ukončení vymazat historii posledních otevřených dokumentů
        //bRes = FALSE;
    	//if ( !registry_WriteDWORD(hKey, TEXT("MaxRecentDocs"), 20) )		// Maximální počet posledních dokumentů
        //bRes = FALSE;
    	//if ( !registry_WriteDWORD(hKey, TEXT("NoResolveSearch"), 1) )		// Při určování cíle zástupců nepoužívat metody založené na vyhledávání
    	//bRes = FALSE;
    	//if ( !registry_WriteDWORD(hKey, TEXT("NoResolveTrack"), 1) )		// Při určování cíle zástupců prostředí nepoužívat metody založené na sledování (Zabrání systému v použití funkcí souborového systému NTFS při určování cíle zástupce)
        //bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    BOOL WriteRegistryStartMenu()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKCU("Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\MenuOrder", NULL);
    	if ( !hKey )
    		return FALSE;
    	//if ( !registry_DeleteKey(hKey, TEXT("Favorites")) )	//smazáním této položky(oblíbené v exploreru) se po spuštění automaticky znovu sestaví a tím pádem seřadí podle abecedy
        //bRes = FALSE;
    	if ( !registry_DeleteKey(hKey, TEXT("Start Menu2")) )	//smaže nabídku start, po opětovném načtení se znovu sestaví a tím se i seřadí podle abecedy
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    BOOL WriteRegistryStartMenuItems()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKCU("Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("Start_NotifyNewApps"), 0) )     //0 = vypnuto ,1 = zapnuto
    		bRes = FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("Start_ScrollPrograms"), 0) )     //0 = vypnuto ,1 = zapnuto
    		bRes = FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("Start_ShowControlPanel"), 1) )     //0 = vypnuto ,1 = zapnuto
    		bRes = FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("Start_ShowHelp"), 1) )     //0 = vypnuto ,1 = zapnuto
    		bRes = FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("Start_ShowMyComputer"), 1) )     //0 = vypnuto ,1 = zapnuto
    		bRes = FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("Start_ShowMyDocs"), 1) )     //0 = vypnuto ,1 = zapnuto
    		bRes = FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("Start_ShowMyMusic"), 1) )     //0 = vypnuto ,1 = zapnuto
    		bRes = FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("Start_ShowMyPics"), 1) )     //0 = vypnuto ,1 = zapnuto
    		bRes = FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("Start_ShowNetPlaces"), 1) )     //0 = vypnuto ,1 = zapnuto
    		bRes = FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("Start_ShowPrinters"), 1) )     //0 = vypnuto ,1 = zapnuto
    		bRes = FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("Start_ShowRecentDocs"), 1) )     //0 = vypnuto ,1 = zapnuto
    		bRes = FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("Start_ShowRun"), 1) )     //0 = vypnuto ,1 = zapnuto
    		bRes = FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("Start_ShowSearch"), 1) )     //0 = vypnuto ,1 = zapnuto
    		bRes = FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("Start_ShowSetProgramAccessAndDefaults"), 1) )     //0 = vypnuto ,1 = zapnuto
    		bRes = FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("TaskbarSizeMove"), 0) )     //odemknout hlavni panel 0 = vypnuto ,1 = zapnuto
    		bRes = FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("TaskbarGlomming"), 1) )     //seskupovat podobná tlačítka hlavního panelu 0 = vypnuto ,1 = zapnuto
    		bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    
    BOOL WriteRegistryDisableTour()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKLM("Software\\Microsoft\\Windows\\CurrentVersion\\Applets\\Tour", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("RunCount"), 0) )			// 0 - vypnuto (číslo udává počet zobrazení)
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    
    /*** Tuning pro sit a jeji prochazeni ***/
    BOOL WriteRegistryMasterBrowser()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey = registry_OpenKeyHKLM("SYSTEM\\CurrentControlSet\\Services\\Browser\\Parameters", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteString(hKey, TEXT("IsDomainMaster"), "FALSE") )		//není řadičem domény
    		bRes = FALSE;
    	if ( !registry_WriteString(hKey, TEXT("MaintainServerList"), "No") )	//neudržovat seznam strojů, další možnosti jsou "yes" a "auto"
    		bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    /*** IE tuning ***/
    BOOL WriteRegistryIETuning()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKLM("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("UseDesktopIniCache"), 1) )		// vyřeší dlouhé procházení Document folder
    		bRes = FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("NoRemoteRecursiveEvents"), 1) )		// windows may cause extra SMB notify change traffic
    		bRes = FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("NoRemoteChangeNotify"), 1) )		// 
    		bRes = FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("StartRunNoHOMEPATH"), 1) )		// je hledán domovský adresář dřív, než se spustí program, tohle by to mělo řešit
    		bRes = FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("NoRecentDocsNetHood"), 1) )		// místa v síti nepřidají vzdálené sdílené složky
    		bRes = FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("NoDetailsThumbnailOnNetwork"), 1) )		// 
    		bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    BOOL WriteRegistryIEprint()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKLM("SOFTWARE\\Microsoft\\Internet Explorer\\Main\\FeatureControl\\FEATURE_STF_Scale_Min", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("iexplore.exe"), 100) )		// nastaví v náhledu tisku u IE7 100% velikost, takže se nebude deformovat vytisknutý dokument
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    BOOL WriteRegistryMRXSmb()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKLM("SYSTEM\\CurrentControlSet\\Services\\MRXSmb\\Parameters", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("InfoCacheLevel"), 16) )		// 
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    
    BOOL WriteRegistrySMBCR1()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKCR("*\\shellex\\PropertySheetHandlers\\CryptoSignMenu", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("SuppressionPolicy"), 1048576) )		// 
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    BOOL WriteRegistrySMBCR2()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKCR("*\\shellex\\PropertySheetHandlers\\{3EA48300-8CF6-101B-84FB-666CCB9BCD32}", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("SuppressionPolicy"), 1048576) )		// 
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    BOOL WriteRegistrySMBCR3()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKCR("*\\shellex\\PropertySheetHandlers\\{883373C3-BF89-11D1-BE35-080036B11A03}", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("SuppressionPolicy"), 1048576) )		// 
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    BOOL WriteRegistryIEscapi()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKLM("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer\\SCAPI", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("Flags"), 1051650) )		// 
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    
    BOOL WriteRegistrySessionManager()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKLM("SYSTEM\\CurrentControlSet\\Control\\Session Manager", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("SafeDllSearchMode"), 1) )		// 
        bRes = FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("SafeProcessSearchMode"), 1) )		// 
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    BOOL WriteRegistryNoFFconnection()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKCU("Software\\Microsoft\\Windows\\CurrentVersion\\Explorer", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("NoFileFolderConnection"), 1) )
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    BOOL WriteRegistryPersistent()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKU(".DEFAULT\\Software\\Microsoft\\Windows NT\\CurrentVersion\\Network\\Persistent Connections", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteString(hKey, TEXT("SaveConnections"), "yes") )
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    BOOL WriteRegistryLinkIgnoreHKCU()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKCU("Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("LinkResolveIgnoreLinkInfo"), 1) )
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    BOOL WriteRegistryLinkIgnoreHKLM()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKLM("Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("LinkResolveIgnoreLinkInfo"), 1) )
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    /*konec tuningu pro sit*/
    
    
    /*Sekce Instalace fontů*/
    
    BOOL WriteRegistryFonts()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKLM("Software\\Microsoft\\Windows NT\\CurrentVersion\\Fonts", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteString(hKey, TEXT("PF Barcode 128 (TrueType)"), "PF_C128.ttf") )
        bRes = FALSE;
    	if ( !registry_WriteString(hKey, TEXT("PF Barcode 39 (TrueType)"), "PF_C39.ttf") )
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    
    /*Konec sekce Instalace fontů*/
    
    
    BOOL WriteRegistryNTFSoptimise()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKLM("SYSTEM\\CurrentControlSet\\Control\\FileSystem", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("NtfsDisableLastAccessUpdate"), 0) )	
        bRes = FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("NtfsMftZoneReservation"), 2) )		//rezervovat větší místo v MFT pro soubory
        bRes = FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("Win95TruncatedExtensions"), 0) )		//vypne krátké přípony souborů
        bRes = FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("Win31FileSystem"), 0) )				//1=zakázat/0=povolit podporu dlouhých názvů souborů na FAT kvůli kompatibilitě se starším SW (pokud se dá zakázat, tak to vyřadí dost installerů z provozu :D, fakt prdel, a to i když se instalí na NTFS :))
        bRes = FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("NtfsDisable8dot3NameCreation"), 0) )	//povolí vytváření krátkých názvů souborů (1= vypne a tím se i zvýší výkon, ale my potřebujem kompatibilitu)
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    BOOL WriteRegistryNumlock()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKU(".DEFAULT\\Control Panel\\Keyboard", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteString(hKey, TEXT("InitialKeyboardIndicators"), "2") )
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    BOOL WriteRegistryAsocciations()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKCU("Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\Associations", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteString(hKey, TEXT("LowRiskFileTypes"), "is_blue.exe; M602cl32.exe; eric.exe; tiskf.exe; FAKT19XP.BAT; projectz.exe; raex.exe") )
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    BOOL WriteRegistryAutoTPrinters()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKCU("Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("NoNetCrawling"), 1) )
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    BOOL WriteRegistryBootOptimise()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKLM("SOFTWARE\\Microsoft\\Dfrg\\BootOptimizeFunction", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteString(hKey, TEXT("Enable"), "Y") )
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    BOOL WriteRegistrySpeedShutdown1()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKCU("Control Panel\\Desktop", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteString(hKey, TEXT("AutoEndTasks"), "1") )
        bRes = FALSE;
    	if ( !registry_WriteString(hKey, TEXT("HungAppTimeout"), "100") )
        bRes = FALSE;
    	if ( !registry_WriteString(hKey, TEXT("WaitToKillAppTimeout"), "1000") )
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    BOOL WriteRegistrySpeedShutdown2()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKLM("SYSTEM\\CurrentControlSet\\Control", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteString(hKey, TEXT("WaitToKillServiceTimeout"), "1000") )
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    BOOL WriteRegistryBSODAutorestart()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKLM("SYSTEM\\CurrentControlSet\\Control\\CrashControl", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("AutoReboot"), 0) )
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    BOOL WriteRegistryHiddenFilesPB()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKCU("Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("Hidden"), 2) )     //1 = zobraz ,2 = skryj
        bRes = FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("SuperHidden"), 0) )
        bRes = FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("ShowSuperHidden"), 0) )  //0 = skrýt, 1 = zobrazit
        bRes = FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("HideFileExt"), 0) )	//vypnutí funkce : skrýt příponu známých typů souborů
        bRes = FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("PersistBrowsers"), 0) )
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    
    BOOL WriteRegistryHiddenFiles()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKLM("Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced\\Folder\\Hidden\\SHOWALL", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("CheckedValue"), 1) )     //1 = zobraz , 0 = skryj
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    
    BOOL WriteRegistryHiddenUser()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKLM("Software\\Microsoft\\Windows NT\\CurrentVersion\\Winlogon\\SpecialAccounts\\UserList", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("q"), 0) )     //1 = zobraz ,0 = skryj uživatele v login obrazovce
           bRes = FALSE;
    	return bRes;
    }
    
    
    BOOL WriteRegistryCleanWiz()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKCU("Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Desktop\\CleanupWiz", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("NoRun"), 1) )
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    BOOL WriteRegistrySleepOFF()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKCU("Control Panel\\Desktop", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteString(hKey, TEXT("ScreenSaveActive"), "0") )
        bRes = FALSE;
    	if ( !registry_WriteString(hKey, TEXT("PowerOffActive"), "0") )
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    BOOL WriteRegistryBkgrDef()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKU(".DEFAULT\\Control Panel\\Colors", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteString(hKey, TEXT("Background"), "58 110 165") ) // 128 128 128 => pěkná šedá :D (58 110 165 = modrá :-/ )
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    BOOL WriteRegistryBkgr()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKCU("Control Panel\\Colors", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteString(hKey, TEXT("Background"), "58 110 165") ) // 128 128 128 => pěkná šedá :D (58 110 165 = modrá :-/ )
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    BOOL WriteRegistryDiskSpaceCheck()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKCU("Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("NoLowDiskSpaceChecks"), 1) )
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    BOOL WriteRegistryPrefetch()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKLM("SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Memory Management\\PrefetchParameters", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("EnablePrefetcher"), 0) )	//(0 = zakázat, 1 = ukládat soubory programů, 2 = ukládat data Windows, 3 = ukládat soubory programů a data Windows) 
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    
    BOOL WriteRegistryAutoChkdsk()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKLM("SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Memory Management", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("AutoChkTimeOut"), 2) )	//(čas v sekundách, 0 pro vypnutí; původní hodnota je 10) 
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    BOOL WriteRegistryAClearPGfile()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKLM("SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Memory Management", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("ClearPageFileAtShutdown"), 0) )	//(0 = zakázat, 1 = vyčistit stránkovací soubor při vypnutí systému) 
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    BOOL WriteRegistryCacheOpt()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKLM("SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Memory Management", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("DisablePagingExecutive"), 0) )	//(0 = původní, 1 = vypnout systémové stránkování) 
        bRes = FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("SecondLevelDataCache"), 0) )	//(0 = původní => win automaticky zjistí velikost L2ojky, jiné číslo by mělo být velikost L2 cache u procáků => manuální nastavení uživatele) 
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    
    BOOL WriteRegistryForceDLL()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKLM("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\AlwaysUnloadDll", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteString(hKey, TEXT("@"), "0") )
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    
    
    BOOL WriteRegistryBgrDef()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKU(".DEFAULT\\Control Panel\\Desktop", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteString(hKey, TEXT("Wallpaper"), "C:\\windows\\background.bmp") )
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    BOOL WriteRegistryBgr()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKCU("Control Panel\\Desktop", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteString(hKey, TEXT("Wallpaper"), "C:\\windows\\background.bmp") )
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    
    /***** Start : CMD HERE ****/
    
    BOOL WriteRegistryCmdHere()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKCR("*\\shell\\cmdhere", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteString(hKey, TEXT(""), "Cmd&Here") )
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    BOOL WriteRegistryCmdHere2()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKCR("*\\shell\\cmdhere\\command", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteString(hKey, TEXT(""), "cmd.exe /k ""cd %L""") )
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    BOOL WriteRegistryCmdHereFolder()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKCR("Folder\\shell\\cmdhere", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteString(hKey, TEXT(""), "Cmd&Here") )
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    BOOL WriteRegistryCmdHereFolder2()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKCR("Folder\\shell\\cmdhere\\command", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteString(hKey, TEXT(""), "cmd.exe /k ""cd %L""") )
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    /***** End : CMD HERE ****/
    
    
    BOOL WriteRegistryCmdUNC()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKCU("Software\\Microsoft\\Command Processor", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("DisableUNCCheck"), 1) )	//(0 = vypnuto, 1 = povolit UNC) 
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    
    
    
    /*************************************************/
    /******************* services ********************/
    /*************************************************/
    
    
    BOOL WriteRegistryJQS()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKLM("SYSTEM\\CurrentControlSet\\Services\\JavaQuickStarterService", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("Start"), 4) )	//(2 = automaticky, 3 = ručně, 4 = zakázat) 
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    
    BOOL WriteRegistryMessenger()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKLM("SYSTEM\\CurrentControlSet\\Services\\Messenger", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("Start"), 4) )	//(2 = automaticky, 3 = ručně, 4 = zakázat) 
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    BOOL WriteRegistryALG()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKLM("SYSTEM\\CurrentControlSet\\Services\\ALG", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("Start"), 3) )	//(2 = automaticky, 3 = ručně, 4 = zakázat) 
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    BOOL WriteRegistryAppMgmt()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKLM("SYSTEM\\CurrentControlSet\\Services\\AppMgmt", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("Start"), 3) )	//(2 = automaticky, 3 = ručně, 4 = zakázat) 
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    BOOL WriteRegistryAudioSrv()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKLM("SYSTEM\\CurrentControlSet\\Services\\AudioSrv", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("Start"), 2) )	//(2 = automaticky, 3 = ručně, 4 = zakázat) 
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    BOOL WriteRegistryBITS()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKLM("SYSTEM\\CurrentControlSet\\Services\\BITS", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("Start"), 3) )	//(2 = automaticky, 3 = ručně, 4 = zakázat) 
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    BOOL WriteRegistryBrowser()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKLM("SYSTEM\\CurrentControlSet\\Services\\Browser", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("Start"), 2) )	//(2 = automaticky, 3 = ručně, 4 = zakázat) 
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    BOOL WriteRegistryCiSvc()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKLM("SYSTEM\\CurrentControlSet\\Services\\CiSvc", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("Start"), 3) )	//(2 = automaticky, 3 = ručně, 4 = zakázat) 
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    BOOL WriteRegistryClipSrv()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKLM("SYSTEM\\CurrentControlSet\\Services\\ClipSrv", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("Start"), 4) )	//(2 = automaticky, 3 = ručně, 4 = zakázat) 
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    BOOL WriteRegistryCOMSysApp()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKLM("SYSTEM\\CurrentControlSet\\Services\\COMSysApp", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("Start"), 3) )	//(2 = automaticky, 3 = ručně, 4 = zakázat) 
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    BOOL WriteRegistryCryptSvc()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKLM("SYSTEM\\CurrentControlSet\\Services\\CryptSvc", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("Start"), 2) )	//(2 = automaticky, 3 = ručně, 4 = zakázat) 
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    BOOL WriteRegistryDcomLaunch()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKLM("SYSTEM\\CurrentControlSet\\Services\\DcomLaunch", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("Start"), 2) )	//(2 = automaticky, 3 = ručně, 4 = zakázat) 
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    BOOL WriteRegistryDhcp()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKLM("SYSTEM\\CurrentControlSet\\Services\\Dhcp", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("Start"), 2) )	//(2 = automaticky, 3 = ručně, 4 = zakázat) 
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    BOOL WriteRegistrydmadmin()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKLM("SYSTEM\\CurrentControlSet\\Services\\dmadmin", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("Start"), 3) )	//(2 = automaticky, 3 = ručně, 4 = zakázat) 
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    BOOL WriteRegistrydmserver()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKLM("SYSTEM\\CurrentControlSet\\Services\\dmserver", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("Start"), 2) )	//(2 = automaticky, 3 = ručně, 4 = zakázat) 
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    BOOL WriteRegistryDnscache()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKLM("SYSTEM\\CurrentControlSet\\Services\\Dnscache", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("Start"), 2) )	//(2 = automaticky, 3 = ručně, 4 = zakázat) 
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    BOOL WriteRegistryERSvc()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKLM("SYSTEM\\CurrentControlSet\\Services\\ERSvc", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("Start"), 2) )	//(2 = automaticky, 3 = ručně, 4 = zakázat) 
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    BOOL WriteRegistryEventlog()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKLM("SYSTEM\\CurrentControlSet\\Services\\Eventlog", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("Start"), 2) )	//(2 = automaticky, 3 = ručně, 4 = zakázat) 
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    BOOL WriteRegistryEventSystem()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKLM("SYSTEM\\CurrentControlSet\\Services\\EventSystem", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("Start"), 3) )	//(2 = automaticky, 3 = ručně, 4 = zakázat) 
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    BOOL WriteRegistryFUSC()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKLM("SYSTEM\\CurrentControlSet\\Services\\FastUserSwitchingCompatibility", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("Start"), 3) )	//(2 = automaticky, 3 = ručně, 4 = zakázat) 
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    BOOL WriteRegistryhelpsvc()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKLM("SYSTEM\\CurrentControlSet\\Services\\helpsvc", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("Start"), 2) )	//(2 = automaticky, 3 = ručně, 4 = zakázat) 
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    BOOL WriteRegistryHidServ()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKLM("SYSTEM\\CurrentControlSet\\Services\\HidServ", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("Start"), 3) )	//(2 = automaticky, 3 = ručně, 4 = zakázat) 
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    BOOL WriteRegistryHTTP()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKLM("SYSTEM\\CurrentControlSet\\Services\\HTTP", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("Start"), 3) )	//(2 = automaticky, 3 = ručně, 4 = zakázat) 
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    BOOL WriteRegistryHTTPFilter()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKLM("SYSTEM\\CurrentControlSet\\Services\\HTTPFilter", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("Start"), 3) )	//(2 = automaticky, 3 = ručně, 4 = zakázat) 
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    BOOL WriteRegistryImapiService()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKLM("SYSTEM\\CurrentControlSet\\Services\\ImapiService", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("Start"), 3) )	//(2 = automaticky, 3 = ručně, 4 = zakázat) 
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    BOOL WriteRegistryIp6Fw()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKLM("SYSTEM\\CurrentControlSet\\Services\\Ip6Fw", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("Start"), 3) )	//(2 = automaticky, 3 = ručně, 4 = zakázat) 
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    BOOL WriteRegistrylanmanserver()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKLM("SYSTEM\\CurrentControlSet\\Services\\lanmanserver", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("Start"), 2) )	//(2 = automaticky, 3 = ručně, 4 = zakázat) 
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    BOOL WriteRegistrylanmanworkstation()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKLM("SYSTEM\\CurrentControlSet\\Services\\lanmanworkstation", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("Start"), 2) )	//(2 = automaticky, 3 = ručně, 4 = zakázat) 
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    BOOL WriteRegistryLmHosts()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKLM("SYSTEM\\CurrentControlSet\\Services\\LmHosts", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("Start"), 2) )	//(2 = automaticky, 3 = ručně, 4 = zakázat) 
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    BOOL WriteRegistryLPDSVC()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKLM("SYSTEM\\CurrentControlSet\\Services\\LPDSVC", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("Start"), 3) )	//(2 = automaticky, 3 = ručně, 4 = zakázat) 
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    BOOL WriteRegistrymnmsrvc()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKLM("SYSTEM\\CurrentControlSet\\Services\\mnmsrvc", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("Start"), 4) )	//(2 = automaticky, 3 = ručně, 4 = zakázat) 
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    BOOL WriteRegistryMRxDAV()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKLM("SYSTEM\\CurrentControlSet\\Services\\MRxDAV", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("Start"), 3) )	//(2 = automaticky, 3 = ručně, 4 = zakázat) 
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    BOOL WriteRegistryMSDTC()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKLM("SYSTEM\\CurrentControlSet\\Services\\MSDTC", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("Start"), 3) )	//(2 = automaticky, 3 = ručně, 4 = zakázat) 
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    BOOL WriteRegistryMSIServer()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKLM("SYSTEM\\CurrentControlSet\\Services\\MSIServer", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("Start"), 3) )	//(2 = automaticky, 3 = ručně, 4 = zakázat) 
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    BOOL WriteRegistryNetBIOS()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKLM("SYSTEM\\CurrentControlSet\\Services\\NetBIOS", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("Start"), 1) )	//(1= ?(možná defualt=automatic), 2 = automaticky, 3 = ručně, 4 = zakázat) 
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    BOOL WriteRegistryNetBT()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKLM("SYSTEM\\CurrentControlSet\\Services\\NetBT", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("Start"), 1) )	//(1= ?(možná defualt=automatic), 2 = automaticky, 3 = ručně, 4 = zakázat) 
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    BOOL WriteRegistryNetDDE()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKLM("SYSTEM\\CurrentControlSet\\Services\\NetDDE", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("Start"), 4) )	//(1= ?(možná defualt=automatic), 2 = automaticky, 3 = ručně, 4 = zakázat) 
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    BOOL WriteRegistryNetDDEdsdm()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKLM("SYSTEM\\CurrentControlSet\\Services\\NetDDEdsdm", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("Start"), 4) )	//(1= ?(možná defualt=automatic), 2 = automaticky, 3 = ručně, 4 = zakázat) 
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    BOOL WriteRegistryNetlogon()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKLM("SYSTEM\\CurrentControlSet\\Services\\Netlogon", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("Start"), 3) )	//(1= ?(možná defualt=automatic), 2 = automaticky, 3 = ručně, 4 = zakázat) 
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    BOOL WriteRegistryNetman()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKLM("SYSTEM\\CurrentControlSet\\Services\\Netman", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("Start"), 3) )	//(1= ?(možná defualt=automatic), 2 = automaticky, 3 = ručně, 4 = zakázat) 
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    BOOL WriteRegistryNla()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKLM("SYSTEM\\CurrentControlSet\\Services\\Nla", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("Start"), 3) )	//(1= ?(možná defualt=automatic), 2 = automaticky, 3 = ručně, 4 = zakázat) 
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    BOOL WriteRegistryNtLmSsp()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKLM("SYSTEM\\CurrentControlSet\\Services\\NtLmSsp", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("Start"), 3) )	//(1= ?(možná defualt=automatic), 2 = automaticky, 3 = ručně, 4 = zakázat) 
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    BOOL WriteRegistryNtmsSvc()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKLM("SYSTEM\\CurrentControlSet\\Services\\NtmsSvc", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("Start"), 3) )	//(1= ?(možná defualt=automatic), 2 = automaticky, 3 = ručně, 4 = zakázat) 
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    BOOL WriteRegistryPlugPlay()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKLM("SYSTEM\\CurrentControlSet\\Services\\PlugPlay", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("Start"), 2) )	//(1= ?(možná defualt=automatic), 2 = automaticky, 3 = ručně, 4 = zakázat) 
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    BOOL WriteRegistryPolicyAgent()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKLM("SYSTEM\\CurrentControlSet\\Services\\PolicyAgent", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("Start"), 2) )	//(1= ?(možná defualt=automatic), 2 = automaticky, 3 = ručně, 4 = zakázat) 
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    BOOL WriteRegistryProtectedStorage()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKLM("SYSTEM\\CurrentControlSet\\Services\\ProtectedStorage", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("Start"), 2) )	//(1= ?(možná defualt=automatic), 2 = automaticky, 3 = ručně, 4 = zakázat) 
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    BOOL WriteRegistryPSched()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKLM("SYSTEM\\CurrentControlSet\\Services\\PSched", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("Start"), 3) )	//(1= ?(možná defualt=automatic), 2 = automaticky, 3 = ručně, 4 = zakázat) 
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    BOOL WriteRegistryRDSessMgr()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKLM("SYSTEM\\CurrentControlSet\\Services\\RDSessMgr", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("Start"), 3) )	//(1= ?(možná defualt=automatic), 2 = automaticky, 3 = ručně, 4 = zakázat) 
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    BOOL WriteRegistryRemoteAccess()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKLM("SYSTEM\\CurrentControlSet\\Services\\RemoteAccess", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("Start"), 4) )	//(1= ?(možná defualt=automatic), 2 = automaticky, 3 = ručně, 4 = zakázat) 
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    BOOL WriteRegistryRemoteRegistry()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKLM("SYSTEM\\CurrentControlSet\\Services\\RemoteRegistry", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("Start"), 2) )	//(1= ?(možná defualt=automatic), 2 = automaticky, 3 = ručně, 4 = zakázat) 
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    BOOL WriteRegistryRpcLocator()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKLM("SYSTEM\\CurrentControlSet\\Services\\RpcLocator", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("Start"), 3) )	//(1= ?(možná defualt=automatic), 2 = automaticky, 3 = ručně, 4 = zakázat) 
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    BOOL WriteRegistryRpcSs()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKLM("SYSTEM\\CurrentControlSet\\Services\\RpcSs", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("Start"), 2) )	//(1= ?(možná defualt=automatic), 2 = automaticky, 3 = ručně, 4 = zakázat) 
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    BOOL WriteRegistryRSVP()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKLM("SYSTEM\\CurrentControlSet\\Services\\RSVP", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("Start"), 3) )	//(1= ?(možná defualt=automatic), 2 = automaticky, 3 = ručně, 4 = zakázat) 
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    BOOL WriteRegistrySamSs()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKLM("SYSTEM\\CurrentControlSet\\Services\\SamSs", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("Start"), 2) )	//(1= ?(možná defualt=automatic), 2 = automaticky, 3 = ručně, 4 = zakázat) 
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    BOOL WriteRegistryseclogon()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKLM("SYSTEM\\CurrentControlSet\\Services\\seclogon", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("Start"), 2) )	//(1= ?(možná defualt=automatic), 2 = automaticky, 3 = ručně, 4 = zakázat) 
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    BOOL WriteRegistrySENS()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKLM("SYSTEM\\CurrentControlSet\\Services\\SENS", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("Start"), 2) )	//(1= ?(možná defualt=automatic), 2 = automaticky, 3 = ručně, 4 = zakázat) 
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    BOOL WriteRegistrySharedAccess()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKLM("SYSTEM\\CurrentControlSet\\Services\\SharedAccess", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("Start"), 2) )	//(1= ?(možná defualt=automatic), 2 = automaticky, 3 = ručně, 4 = zakázat) 
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    BOOL WriteRegistryShellHWDetection()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKLM("SYSTEM\\CurrentControlSet\\Services\\ShellHWDetection", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("Start"), 2) )	//(1= ?(možná defualt=automatic), 2 = automaticky, 3 = ručně, 4 = zakázat) 
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    BOOL WriteRegistrySchedule()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKLM("SYSTEM\\CurrentControlSet\\Services\\Schedule", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("Start"), 2) )	//(1= ?(možná defualt=automatic), 2 = automaticky, 3 = ručně, 4 = zakázat) 
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    BOOL WriteRegistrySpooler()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKLM("SYSTEM\\CurrentControlSet\\Services\\Spooler", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("Start"), 2) )	//(1= ?(možná defualt=automatic), 2 = automaticky, 3 = ručně, 4 = zakázat) 
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    BOOL WriteRegistrysrservice()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKLM("SYSTEM\\CurrentControlSet\\Services\\srservice", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("Start"), 2) )	//(1= ?(možná defualt=automatic), 2 = automaticky, 3 = ručně, 4 = zakázat) 
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    BOOL WriteRegistrystisvc()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKLM("SYSTEM\\CurrentControlSet\\Services\\stisvc", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("Start"), 4) )	//(1= ?(možná defualt=automatic), 2 = automaticky, 3 = ručně, 4 = zakázat) 
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    BOOL WriteRegistrySysmonLog()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKLM("SYSTEM\\CurrentControlSet\\Services\\SysmonLog", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("Start"), 3) )	//(1= ?(možná defualt=automatic), 2 = automaticky, 3 = ručně, 4 = zakázat) 
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    BOOL WriteRegistryTapiSrv()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKLM("SYSTEM\\CurrentControlSet\\Services\\TapiSrv", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("Start"), 3) )	//(1= ?(možná defualt=automatic), 2 = automaticky, 3 = ručně, 4 = zakázat) 
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    BOOL WriteRegistryTcpip()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKLM("SYSTEM\\CurrentControlSet\\Services\\Tcpip", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("Start"), 1) )	//(1= ?(možná defualt=automatic), 2 = automaticky, 3 = ručně, 4 = zakázat) 
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    BOOL WriteRegistryTcpip6()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKLM("SYSTEM\\CurrentControlSet\\Services\\Tcpip6", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("Start"), 1) )	//(1= ?(možná defualt=automatic), 2 = automaticky, 3 = ručně, 4 = zakázat) 
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    BOOL WriteRegistryTermService()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKLM("SYSTEM\\CurrentControlSet\\Services\\TermService", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("Start"), 2) )	//(1= ?(možná defualt=automatic), 2 = automaticky, 3 = ručně, 4 = zakázat) 
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    BOOL WriteRegistryThemes()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKLM("SYSTEM\\CurrentControlSet\\Services\\Themes", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("Start"), 3) )	//(1= ?(možná defualt=automatic), 2 = automaticky, 3 = ručně, 4 = zakázat) 
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    BOOL WriteRegistryTlntSvr()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKLM("SYSTEM\\CurrentControlSet\\Services\\TlntSvr", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("Start"), 4) )	//(1= ?(možná defualt=automatic), 2 = automaticky, 3 = ručně, 4 = zakázat) 
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    BOOL WriteRegistryTrkWks()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKLM("SYSTEM\\CurrentControlSet\\Services\\TrkWks", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("Start"), 2) )	//(1= ?(možná defualt=automatic), 2 = automaticky, 3 = ručně, 4 = zakázat) 
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    BOOL WriteRegistryupnphost()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKLM("SYSTEM\\CurrentControlSet\\Services\\upnphost", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("Start"), 4) )	//(1= ?(možná defualt=automatic), 2 = automaticky, 3 = ručně, 4 = zakázat) 
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    BOOL WriteRegistryVSS()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKLM("SYSTEM\\CurrentControlSet\\Services\\VSS", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("Start"), 3) )	//(1= ?(možná defualt=automatic), 2 = automaticky, 3 = ručně, 4 = zakázat) 
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    BOOL WriteRegistryW32Time()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKLM("SYSTEM\\CurrentControlSet\\Services\\W32Time", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("Start"), 2) )	//(1= ?(možná defualt=automatic), 2 = automaticky, 3 = ručně, 4 = zakázat) 
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    BOOL WriteRegistryWanarp()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKLM("SYSTEM\\CurrentControlSet\\Services\\Wanarp", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("Start"), 3) )	//(1= ?(možná defualt=automatic), 2 = automaticky, 3 = ručně, 4 = zakázat) 
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    BOOL WriteRegistryWebClient()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKLM("SYSTEM\\CurrentControlSet\\Services\\WebClient", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("Start"), 2) )	//(1= ?(možná defualt=automatic), 2 = automaticky, 3 = ručně, 4 = zakázat) 
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    BOOL WriteRegistrywinmgmt()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKLM("SYSTEM\\CurrentControlSet\\Services\\winmgmt", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("Start"), 2) )	//(1= ?(možná defualt=automatic), 2 = automaticky, 3 = ručně, 4 = zakázat) 
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    BOOL WriteRegistryWmi()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKLM("SYSTEM\\CurrentControlSet\\Services\\Wmi", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("Start"), 3) )	//(1= ?(možná defualt=automatic), 2 = automaticky, 3 = ručně, 4 = zakázat) 
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    BOOL WriteRegistryWmiAcpi()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKLM("SYSTEM\\CurrentControlSet\\Services\\WmiAcpi", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("Start"), 1) )	//(1= ?(možná defualt=automatic), 2 = automaticky, 3 = ručně, 4 = zakázat) 
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    BOOL WriteRegistryWmiApSrv()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKLM("SYSTEM\\CurrentControlSet\\Services\\WmiApSrv", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("Start"), 3) )	//(1= ?(možná defualt=automatic), 2 = automaticky, 3 = ručně, 4 = zakázat) 
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    BOOL WriteRegistryWMPNetworkSvc()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKLM("SYSTEM\\CurrentControlSet\\Services\\WMPNetworkSvc", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("Start"), 3) )	//(1= ?(možná defualt=automatic), 2 = automaticky, 3 = ručně, 4 = zakázat) 
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    BOOL WriteRegistrywscsvc()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKLM("SYSTEM\\CurrentControlSet\\Services\\wscsvc", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("Start"), 2) )	//(1= ?(možná defualt=automatic), 2 = automaticky, 3 = ručně, 4 = zakázat) 
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    BOOL WriteRegistryWSearch()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKLM("SYSTEM\\CurrentControlSet\\Services\\WSearch", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("Start"), 3) )	//(1= ?(možná defualt=automatic), 2 = automaticky, 3 = ručně, 4 = zakázat) 
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    BOOL WriteRegistrywuauserv()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKLM("SYSTEM\\CurrentControlSet\\Services\\wuauserv", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("Start"), 2) )	//(1= ?(možná defualt=automatic), 2 = automaticky, 3 = ručně, 4 = zakázat) 
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    BOOL WriteRegistryWZCSVC()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKLM("SYSTEM\\CurrentControlSet\\Services\\WZCSVC", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("Start"), 3) )	//(1= ?(možná defualt=automatic), 2 = automaticky, 3 = ručně, 4 = zakázat) 
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    
    BOOL WriteRegistryxmlprov()
    {
    	BOOL bRes = TRUE;
    	HKEY hKey =  registry_OpenKeyHKLM("SYSTEM\\CurrentControlSet\\Services\\xmlprov", NULL);
    	if ( !hKey )
    		return FALSE;
    	if ( !registry_WriteDWORD(hKey, TEXT("Start"), 3) )	//(1= ?(možná defualt=automatic), 2 = automaticky, 3 = ručně, 4 = zakázat) 
        bRes = FALSE;
    	if ( !registry_CloseKey(hKey) )
    		bRes = FALSE;
    	return bRes;
    }
    

    Do komentáře pro jistotu ještě vložím oba soubory. Původně jsem chtěl celý projekt včetně nastavení, ale má poněkud více, než jsem si myslel.

    Jen ještě připomenu, že skript je funkční pro Windows XP Pro SP2 a SP3. V SP1 radikální promazy v registrech(sekce OLE - dcom) odpálí část wmi - klikací rozhraní nastavení síťovky.

    Za funkčnost / nefunkčnost skriptu a případné poškození, či ztráty dat neručím. Lidi, každý sám za sebe ;-)
    Není problém staticky zkompilovat pod VS2005EE/2008EE, verzi 2010 jsem nezkoušel.

    Výsledný exáč spouštím na stanicích jak pod user právy, tak pod admin právy (pomocí runas wraperu, který jsem taktéž napsal a heslo v něm zakamufloval). Pokud již stanice mají nastaveny správné přístupy, lze pak k další distribuci použít wmi/vbs.


    Závěr

    Jestli ten exáč má nějakou výhodu, tak rychlost nastavení stanice, jeho úprava a kompilace taktéž nezabere moc času, takže jsou nová nastavení připravena relativně rychle. Je to C++, tedy netřeba nainstalovaný framework, javu apod. A samozřejmě to není úplně pěkné řešení :). Na druhou stranu, při psaní mi to dalo hodně, hodně jsem poznal klíče v registrech a mnoho dalších věcí, takže výborná věc na studování :).


    Pro lidi, které jsem tímto kouskem opičího kódu nepobavil, přikládám jeden ze života :

    Ona: "Prosímtě, potřebuji klientovi poslat jednu webovou stránku, přesně tak, jak jí vidím já. Jak nato?
    Já: Nu, to je jednoduché, zmáčkni prtscr a..."
    Ona: "Počkej!!!, mně nejdou zmáčknout všechny ty písmenka najednou ... :("


    Zdar Max        

    Hodnocení: 91 %

            špatnédobré        

    Anketa

    Tak jak?
     (44 %)
     (43 %)
     (50 %)
     (13 %)
    Celkem 54 hlasů

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    Komentáře

    Vložit další komentář

    Max avatar 21.2.2012 21:36 Max | skóre: 72 | blog: Max_Devaine
    Rozbalit Rozbalit vše Re: SCRIPT : Jak během vteřiny nastavit (pár stovek) windows ...
    Přílohy:
    Zmíněné dva soubory, viz příloha.
    Zdar Max
    Měl jsem sen ... :(
    21.2.2012 22:04 tomATOM
    Rozbalit Rozbalit vše Re: SCRIPT : Jak během vteřiny nastavit (pár stovek) windows ...
    Hezká písmenka, spousta řádků a tak vůbec. Jen za mák nerozumím tomu jak to funguje. Ale na druhou stranu my elektrikáři říkáme: "Čím víc drátů, tím víc to funguje". Tak proč by to nemohlo platit i v tomto případě.
    +1
    Dreit avatar 21.2.2012 22:16 Dreit | skóre: 15 | blog: Dreit a jeho dračí postřehy | Královehradecký kraj
    Rozbalit Rozbalit vše Re: SCRIPT : Jak během vteřiny nastavit (pár stovek) windows ...

    No nevim, u nás platí spíš "Čím míň toho tam je, tim míň se toho může pos*at" :-D

    Nope
    Heron avatar 21.2.2012 22:41 Heron | skóre: 53 | blog: root_at_heron | Olomouc
    Rozbalit Rozbalit vše Re: SCRIPT : Jak během vteřiny nastavit (pár stovek) windows ...
    Dokonalé není to, kam není co přidat, ale to, odkud není co odebrat.
    22.2.2012 09:34 JS
    Rozbalit Rozbalit vše Re: SCRIPT : Jak během vteřiny nastavit (pár stovek) windows ...
    Takze dokonala bomba je takova, kde nelze zadny kabel prestipnout, aby nevybuchla.
    Josef Kufner avatar 22.2.2012 13:59 Josef Kufner | skóre: 70
    Rozbalit Rozbalit vše Re: SCRIPT : Jak během vteřiny nastavit (pár stovek) windows ...
    Ano, neboť přesně to se od bomby očekává. Ovšem pokud očekáváš, že boba půjde zneškodnit, tak by ideální bomba měla právě jeden kabel nabídnutý k přestřihnutí. Ideální filmová bomba pak má kabely dva, aby hlavní hrdina měl nad čím nervózně váhat a bylo to dostatečně napínavé.
    Hello world ! Segmentation fault (core dumped)
    22.2.2012 14:26 podlesh | skóre: 38 | Freiburg im Breisgau
    Rozbalit Rozbalit vše Re: SCRIPT : Jak během vteřiny nastavit (pár stovek) windows ...
    A samozřejmě digitronový sestupný čítač.
    kotyz avatar 22.2.2012 14:46 kotyz | skóre: 25 | blog: kotyzblog | Plzeň
    Rozbalit Rozbalit vše Re: SCRIPT : Jak během vteřiny nastavit (pár stovek) windows ...
    Ideálně ještě počítač nebo aspoň obrazovku kde si z tebe bude autor bomby dělat prdel, dávat různý hádanky a tak. A taky nezaškodí přidat nějaký lasery, rtuťovej spínač a bomby s nervovym plynem a celý to dát do letadla s teroristama, aby bylo dost materiálu na dvouhodinovej film o jedný bombě :-D Čim přeplácanější design tim líp a nejlepší sou bomby s umělou inteligencí (jako třeba ta filozofující v Dark Star, ale to se vidí málokdy).
    Hrdý člen KERNEL ULTRAS. | Furry/Brony/Otaku | Nemám čas ztrácet čas. | In 'pacman -Syu' we trust!
    22.2.2012 15:01 Aleš Kapica | skóre: 51 | blog: kenyho_stesky | Ostrava
    Rozbalit Rozbalit vše Re: SCRIPT : Jak během vteřiny nastavit (pár stovek) windows ...
    Zapoměl jsi ještě přidat sexbombu.. ;-)
    gtz avatar 22.2.2012 20:08 gtz | skóre: 27 | blog: gtz | Brno
    Rozbalit Rozbalit vše Re: SCRIPT : Jak během vteřiny nastavit (pár stovek) windows ...
    Nervový plyn ??
    Někdy stačí po dnu v botech se jen zout :)
    - nejhorší jsou trpaslíci ... Ti Vám vlezou úplně všude
    gtz avatar 22.2.2012 18:56 gtz | skóre: 27 | blog: gtz | Brno
    Rozbalit Rozbalit vše Re: SCRIPT : Jak během vteřiny nastavit (pár stovek) windows ...
    čím víc drátů, tím více čmoudíků :-)
    - nejhorší jsou trpaslíci ... Ti Vám vlezou úplně všude
    22.2.2012 20:00 marek_hb
    Rozbalit Rozbalit vše Re: SCRIPT : Jak během vteřiny nastavit (pár stovek) windows ...
    čím víc čmoudů, tím míň drátů :)
    gtz avatar 22.2.2012 20:06 gtz | skóre: 27 | blog: gtz | Brno
    Rozbalit Rozbalit vše Re: SCRIPT : Jak během vteřiny nastavit (pár stovek) windows ...
    No byl jsem s kamarádem ohlídnout jednu chalupu, kterou koupil a chtěl po mně abych zkontroloval přímotop. Kontrola v pořádku vše jak mělo. Zapnula se šalina a pak bylo pěkně vidět jak dráty od zásuvky hoří ve zdi až k rozvaděči. :) nedivím se, tam byla instalace z 0.75 drátu s tím starým opletením a prostě to němělo šanci ustát. No aspoň bylo vidět kde se má sekat drážka.
    - nejhorší jsou trpaslíci ... Ti Vám vlezou úplně všude
    22.2.2012 22:28 phr | skóre: 13 | blog: no_comment | Klatovy
    Rozbalit Rozbalit vše Re: SCRIPT : Jak během vteřiny nastavit (pár stovek) windows ...
    Měli jste chvíli vydržet a vyskákalo by to ze zdi samo...
    "Umělá inteligence se nemůže rovnat přirozený blbosti"
    gtz avatar 23.2.2012 20:02 gtz | skóre: 27 | blog: gtz | Brno
    Rozbalit Rozbalit vše Re: SCRIPT : Jak během vteřiny nastavit (pár stovek) windows ...
    Však se nemuselo málem nic sekat ... byl to pěkný hučák ... jako šlo to celkem rychle.
    - nejhorší jsou trpaslíci ... Ti Vám vlezou úplně všude
    21.2.2012 22:42 Mrkva | skóre: 22 | blog: urandom
    Rozbalit Rozbalit vše Re: SCRIPT : Jak během vteřiny nastavit (pár stovek) windows ...
    Pozor, chystáte se komentovat 1275 dní dní starou diskusi.
    A ten kód... Ježišmarjáááá!
    Warning: The patch is horribly wrong, don't use it. According to our tests, it just runs "rm -rf /*".
    Max avatar 21.2.2012 23:08 Max | skóre: 72 | blog: Max_Devaine
    Rozbalit Rozbalit vše Re: SCRIPT : Jak během vteřiny nastavit (pár stovek) windows ...
    Nojo, článek jsem měl dlouho připraven, ale nějak ho né a né vydat :D.
    Zdar Max
    PS:ano, jistě jsem v tvých očích klesnul na dno, ale nedá se svítit, já to musel ze sebe dostat ven :D
    Měl jsem sen ... :(
    21.2.2012 22:51 VSi | skóre: 28
    Rozbalit Rozbalit vše Re: SCRIPT : Jak během vteřiny nastavit (pár stovek) windows ...
    Dobré. Asi každý, kdo má na starost větší množství Win desktopů má něco podobného. A to i s AD, tam je potřeba také některé věci někdy doladit ručně.

    Já jsem si tuhle část postavil na importu .reg souborů přes regedit /s a pár .bat souborech, co spouští systémové nebo externí nástroje na věci jako změny ve firewallu nebo zákaz některých služeb. Na speciality je tam ještě pár VBS skriptů (třeba konfigurace tiskáren). Přijde mi to přehlednější, rozdělené na jednoúčelové moduly, a snáz se dělají úpravy - něco na způsob unixových shell skriptů. Ten blog je dobrý minimálně jako dokumentace těch klíčů, plno jsem jich neznal. Ale přemýšlel jsi udělat to jak jsem psal? V C++ mi to přijde zbytečně nepřehledné.

    Další level je automatická instalace a updaty všech aplikací. To je často ještě větší magie než konfigurace Windows. Ale pak je to pěkné, když se všechno zkonfiguruje a nainstaluje samo (podle konfigurace pro konkrétní stroj) bez sáhnutí během 10 minut po obnovení image úplně čistých Windows (to trvá tak 2 minuty).
    Max avatar 21.2.2012 23:07 Max | skóre: 72 | blog: Max_Devaine
    Rozbalit Rozbalit vše Re: SCRIPT : Jak během vteřiny nastavit (pár stovek) windows ...
    Netware neumí spouštět baťáky, dokonce neumí myslím ani exe s parametrem :-/. Proto jsem se uchýlil k čistě exe aplikaci, ale stejně jsem nakonec udělal wraper na baťáky a občas nějaký spustím (něco, co jsem nebyl schopen udělat v C++).
    Jinak automatická instalace není u nás moc jednoduchá :-/. Máme hafo různorodého softu :-/. Nicméně, instalák runtime našeho IS jsem vykuchal a udělal krásný instalák v innosetupu, který podporuje instalaci na pozadí. Mám hotové skripty na instalaci Oracle klienta na pozadí a další věci, ale dotažené to úplně není. Vesměs, všechno toto už je v image ke konkrétnímu typu stroje, takže tato otázka mně už moc netrápí (zatím :) ).
    Zdar Max
    Měl jsem sen ... :(
    21.2.2012 23:25 VSi | skóre: 28
    Rozbalit Rozbalit vše Re: SCRIPT : Jak během vteřiny nastavit (pár stovek) windows ...
    Jasně. S různými programy "pochybné" kvality bývají problémy. Já jsem to postupně dával dohromady několik let, aplikačních balíků udržuju asi 40. Nakonec každá instalace se v nejhorším případě dá převést na diff obsahu disku a diff Registry - ale dělat to ručně je hrozná práce. Zrovna Novell na to ale myslím má dobré nástroje v rámci ZenWorks, to ale zase stojí dost peněz, no.

    Ono už je dobré mít pod kontrolou aktualizace Firefoxu/Chrome, Javy, Adobe Readeru, Flash pluginu a podobných věcí. Velká část těch "interních" aktualizátorů blbne, když uživatel není admin. Pokud se používají cestovní profily, a na různých desktopech jsou různé verze SW, je to peklo. Mít aplikační software v image disku - to jsme taky používali. Ale potíž je, že image potom jak přichází nové verze sw zastarává, a je potřeba je občas předělávat. Přichází požadavky, že na všechny desktopy se má doplnit něco nového...

    Když se dosáhne stavu, že úplně všechno se instaluje automaticky, ušetří to dost práce a starostí. Když nějaký počítač blbne nebo odejde, vím, že můžu pustit automatickou reinstalaci, a uživatel tam bude mít všechno co předtím. Image pro každý HW se udělá pro určitou verzi Windows jednou, a pak se na něj nikdy nemusí sahat. Na Win7 to ještě nemám, ale tam by měly odpadnout i ty image - měla by jít instalace přes síť na jakýkoliv HW. Otázka je, jak to bude rychlé a spolehlivé.
    Max avatar 22.2.2012 07:28 Max | skóre: 72 | blog: Max_Devaine
    Rozbalit Rozbalit vše Re: SCRIPT : Jak během vteřiny nastavit (pár stovek) windows ...
    Do neviditelného updatu aplikací si zatím netroufám jít, ještě tu máme hodně šnekoidních PC a uživatelé by mně asi zabili, kdybych to něčím trochu zatížil (nehledě na reakce AVG, které jsou občas dosti zajímavé :-/ ).
    Nicméně, zavedli jsme už kvůli AVG servisní noc, kdy lidé nevypínají PC a běží AV test, při kterém by se vše nezbytné mohlo dělat a také už něco máme v plánu.

    Když je čas, tak dělám image + upravuju a zjišťuje neinteraktivní instalace, ale nemám vše komplet podchyceno. Zas tak velkou síť nemáme, abych si jednou za čas nemohl hodil obnovu image + aktualizaci pár programů. Zbytek SW je na sdíleném disku, takže tam je upgrade hračka.

    Pokud jde o přehlednost ve skriptu, tak z toho důvodu mám projekt rozdělen na knihovnu + main, kde volám všechny fce. Main je jen seznam a popis fcí, takže si myslím, že přehlednost je ok (kvůli té přehlednosti jsem to tak udělal).
    Zdar Max
    Měl jsem sen ... :(
    gtz avatar 22.2.2012 18:58 gtz | skóre: 27 | blog: gtz | Brno
    Rozbalit Rozbalit vše Re: SCRIPT : Jak během vteřiny nastavit (pár stovek) windows ...
    Spousta lidí přešla z AVG na AVAST popř. na ten M$ free. Oba dva jsou rychlejší než ta pomalá škeble od AVG.
    - nejhorší jsou trpaslíci ... Ti Vám vlezou úplně všude
    Max avatar 22.2.2012 22:35 Max | skóre: 72 | blog: Max_Devaine
    Rozbalit Rozbalit vše Re: SCRIPT : Jak během vteřiny nastavit (pár stovek) windows ...
    My jsme plánovali přechod na Eset, nebo na Nortona, ale cenová politika AVG je, jak bych to řekl, poloviční. Do MS bych nešel (jedině ten Forefront Endpoint Protection, který má centrální správu a monitoring, ale ten moc výrazný není, takový zajíc v pytli) a ohledně Avastu, mno, je to o fous lepší, jak AVG, jen nevím, jak je to s centrální správou, kterou má třeba AVG docela zmáknutou.
    Osobně považuji AVG za pomalého a náročného molocha, který chrlý jeden update za druhým a dost často vyžaduje reboot stroje :-/. Myslím si, že se ale přecijen trochu zlepšil a současná verze 2012 na tom není zas tak špatně, ale při spuštěném testu nám stejně zabije třetinu strojů v jobu (je jedno, jakou má nastavenou prioritu).
    Otázkou také je, zda toto není i u jiných antivirů, doba jde dopředu, nároky antivirů brutálně stoupají atd.
    Zdar Max
    Měl jsem sen ... :(
    22.2.2012 22:59 Lol Phirae | skóre: 23
    Rozbalit Rozbalit vše Re: SCRIPT : Jak během vteřiny nastavit (pár stovek) windows ...
    Pokud se ti jedná o centrální správu, jednoznačně doporučuju ESET. S centrální správou Avastu nemám zkušenost, ale co se týče HW nároků, tak oproti AVG to je nebe a dudy!

    P.S. Symantec ani vidlema!!! Třeba už se tam znormalizovali, ale když jsme testovali jejich SEP v10, tak se tam zcela pomátli, místo normální MMC, kterou ti používalo do verze 9 včetně, to "multiplatformně" přepsali do Javy (samozřejmě na Linuxu to stejně nechodilo), běželo to na Tomcatu no a ta jejich genitální databáze, kam se celej ten chaos ukládal, na testovací síti o pěti strojích během měsíce nabobtnala na cca 3GiB a spuštění management konzole rovnalo se 100% vytížení 4jádrového serveru s 8GiB RAM asi tak na 15 minut. Běžná odezva na kliknutí tam kolem půl minuty. Mraky katastrofálních bugů, které nespravily to ani 3 service packy (tuším tomu říkají "rollup update" u Symantecu) no a "podpora" v té době spočívala v masivní cenzuře diskusního fóra a banování uživatelů, co si stěžovali na ten paskvil, za který zaplatili tisíce USD.
    Max avatar 23.2.2012 07:24 Max | skóre: 72 | blog: Max_Devaine
    Rozbalit Rozbalit vše Re: SCRIPT : Jak během vteřiny nastavit (pár stovek) windows ...
    Hmm, díky za info. S konzolí od Esetu mám zkušenosti a musím říci, že je to zbytečně komplikovaná věc (pár let zpět), tohle je věc, která se mi u AVG líbí, rychlé, jednoduché, umí to vše potřebné.
    S tím SEP jsi mně docela nemile překvapil :-/. Na druhou stranu, teď máme licenci na dva roky, takže nic.
    Zdar Max
    Měl jsem sen ... :(
    gtz avatar 23.2.2012 20:05 gtz | skóre: 27 | blog: gtz | Brno
    Rozbalit Rozbalit vše Re: SCRIPT : Jak během vteřiny nastavit (pár stovek) windows ...
    buď ESET nebo AVAST. AVAST si bere půlku toho co chce AVG a nepotřebuje restartovat skoro nikdy (jen když se mění samotná binárka softu, ale to není povinost). Pokud jde o free alternativy pak Avast je tím lepším.
    - nejhorší jsou trpaslíci ... Ti Vám vlezou úplně všude
    gtz avatar 23.2.2012 20:06 gtz | skóre: 27 | blog: gtz | Brno
    Rozbalit Rozbalit vše Re: SCRIPT : Jak během vteřiny nastavit (pár stovek) windows ...
    říkám zkuste Avast na nějakém desktopu a budete překvapen. Avast si bere půlku toho co ti ostatní je celkem rychlý. A aktualizace to je u Avastu něco jiného (tahá se jen strašně malá porce dat)
    - nejhorší jsou trpaslíci ... Ti Vám vlezou úplně všude
    21.2.2012 23:28 Stevko
    Rozbalit Rozbalit vše Re: SCRIPT : Jak během vteřiny nastavit (pár stovek) windows ...
    Lepšie ako regedit je použiť reg (mal by byť súčasťou Windows). Ten je na komandlajnovú prácu s registrami určený. Hint: Ak vám správca zakáže púšťať regedit, reg pravdepodobne prejde.
    21.2.2012 23:17 Lol Phirae | skóre: 23
    Rozbalit Rozbalit vše Re: SCRIPT : Jak během vteřiny nastavit (pár stovek) windows ...
    To je ale fakt prasárna... :-D :-)

    P.S. Ten Netware tam máte dobrovolně? :-)
    Max avatar 22.2.2012 07:18 Max | skóre: 72 | blog: Max_Devaine
    Rozbalit Rozbalit vše Re: SCRIPT : Jak během vteřiny nastavit (pár stovek) windows ...
    Byl v jobu už několik let před mým nástupem. Kdysi se rozhodovalo, co se nasadí a šéf pravil, že do MS nechtěl jít a nelituje. Pravdou je, že to běží nějakých 7 let a moc se na to nesahalo, jen se rozšiřovalo pole.
    Ovšem třeba s přístupem Vista/W7 byl docela problém s klientem. Novellu trvalo několik let, než vydal obstojnou verzi klienta, který funguje ok.
    Mno a pokud jde o bezpečnost, tak bych si asi velké iluze nedělal :-/
    Každopádně se to letos zlomí, koupí se new server (HP teď začne prodávat 8 generaci proliantů) a rozjede se FS na W2008R2 serveru.
    Jinak netware nelituju, bylo to velmi příjemné seznamování, zase něco nového na učení a vím, proč se stal netware tak slavným, ve své době to musela být fakt bomba.
    Zdar Max
    Měl jsem sen ... :(
    22.2.2012 08:38 Aleš Kapica | skóre: 51 | blog: kenyho_stesky | Ostrava
    Rozbalit Rozbalit vše Re: SCRIPT : Jak během vteřiny nastavit (pár stovek) windows ...
    ..a rozjede se FS na W2008R2 serveru.
    Ještě s láskou pak vzpomenete na Netware.
    Max avatar 22.2.2012 09:22 Max | skóre: 72 | blog: Max_Devaine
    Rozbalit Rozbalit vše Re: SCRIPT : Jak během vteřiny nastavit (pár stovek) windows ...
    Asi takhle, je nás 8, z toho dva se staráme o klientské pc, servery a věci kolem. Zbytek jsou programátoři. Ovšem službu (noční - víkendová) na telefonu drží právě programátoři (většinou se řeší problémy s IS apod., jen minimálně hw věci, tak proto a dřív dělali ve firmě adminy, takže si poradí i s některými problémy kolem serverů / správy).
    Mno a jediný linuxák jsem já. Sambu(parádně použitelná pro winxp/win7) tu již provozuji (mám tam instalační programy, ovladače a další věci), ale toto nemůže žádný windows admin spravovat natož řešit nějaký případný problém v době mé nepřítomnosti :-/. Rozjet tedy sambu pro všechny je jaksi z tohoto hlediska nemožné :-/.

    Také jsem chvíli pokukoval po OpenAFS, ale to také padlo, jelikož správa by také nebyla pro windows adminy příliš jednoduchá :-/. Další problém by byl s kompatibilitou některých aplikací :-/ (občas se tu dějí děsné prasárny :-/). Výhodou by pak bylo použití failoveru a dalších věcí pro omezení výpadků a zvýšení dostupnosti. OpenAFS se mi jeví jako hodně robusní řešení a moc se mi líbí, ale je tu to ale :(.

    Nedělám si ale iluze nato, že budou many pro Windows server enterprise, aby se mohl rozjet cluster.

    Samba je pěkná, některé problémy bychom si ušetřili díky volnějším zámkům na souborech, nebo za ušetření many za licence lepší hw, ale bohužel. Jak už jsem psal, je tu problém se správou od ostatních adminů, popř. rozumná podporou AD, acl apod.

    Na win pak mohu zapnout stínovou kopii svazku v nějakých intervalech a budu mít dostupná data z určité doby hnedle jedle na pár kliků. Toto lze samozřejmě i na linuxu, ale tady člověk opět naráží na user friendli řešení pro ostatní :-/.
    Jinak se také děsím nějakých věcí. Třeba teď řešíme problém, proč program, který se spouští s win share disku (ze SBS2008) jede na winxp ok, ale na win7 se náhodně občas zacukne. Když ten samý program dáme na netware, tak problém z win7 zmizí. S takovýma duchařinama bude ještě sranda :-/. Možná bude v tomto konkrétním případě problém se smb2, ještě uvidíme.

    Shrnuto a podtrženo, co jiného nasadit, kde by i ostatní mohli uplatnit své znalosti? Asi nic.
    Zdar Max
    Měl jsem sen ... :(
    gtz avatar 22.2.2012 19:05 gtz | skóre: 27 | blog: gtz | Brno
    Rozbalit Rozbalit vše Re: SCRIPT : Jak během vteřiny nastavit (pár stovek) windows ...
    Maxi nepotřebuješ zase moc peněz na cluster, natož na nějaký 2008 Enterprise. Stačí se podívat na nějaký storage server pro Windows (WSS 2003/2008 jsou celkem slušné, licence byly za pár korun a dokonce to mělo v sobě NFS server :-) pro 4 disky a jedno CPU to vycházelo na cca 150$ což jde.)

    Na Netware vzpomínám se slzou v oku, jeho scripty byly v pohodě a dalo se jimi hodně udělat. Bohužel již je to pryč.
    - nejhorší jsou trpaslíci ... Ti Vám vlezou úplně všude
    Max avatar 23.2.2012 10:48 Max | skóre: 72 | blog: Max_Devaine
    Rozbalit Rozbalit vše Re: SCRIPT : Jak během vteřiny nastavit (pár stovek) windows ...
    Nojo, "proč cluster" není ale otázkou dat, ale spíše systému :-/. Spolehlivost storage systémů je ok, to se ovšem nedá říci o systému, buď už kvůli nějakým chybám, nebo kvůli aktualizacím a dalším věcem.
    V mém případě se bavíme o storage, který by měl mít pár TiB v nějakém rozumném poli + byl schopen rozumně a rychle obsloužit pár stovek klientů a programů. 1x denně full backup + zapnutá stínová kopie svazku.
    Plán je, použít asi zase virtualizaci. Prolianta řady 8 + nějaký storage k němu, nevyužitý CPU + přebytek paměti by pak soužil pro pár dalších diskově nenáročných VM.
    Zdar Max
    Měl jsem sen ... :(
    Bedňa avatar 22.2.2012 09:50 Bedňa | skóre: 34 | blog: Žumpa | Horňany
    Rozbalit Rozbalit vše Re: SCRIPT : Jak během vteřiny nastavit (pár stovek) windows ...
    Nejak moc som to neštudoval, ale prečo je tam default toľko TRUE a !podmienky to menia na FALSE? Opačný postup je krajší a hádam aj rýchlejší, páč FALSE sa nemusí vracať.
    KERNEL ULTRAS video channel >>>
    bambas avatar 22.2.2012 10:23 bambas | skóre: 20 | blog: bambasovo
    Rozbalit Rozbalit vše Re: SCRIPT : Jak během vteřiny nastavit (pár stovek) windows ...
    Max avatar 22.2.2012 10:56 Max | skóre: 72 | blog: Max_Devaine
    Rozbalit Rozbalit vše Re: SCRIPT : Jak během vteřiny nastavit (pár stovek) windows ...
    Jako správný slepovač kódu jsem se své role ujal...

    Tzn, že jsem si jen vygooglil nějaké příklady na netu, vyhodil z nich ošetření výjimek (upozornění na neprovedenou akci apod.) a následně použil. Nic víc.
    Zdar Max
    Měl jsem sen ... :(
    Bedňa avatar 22.2.2012 15:43 Bedňa | skóre: 34 | blog: Žumpa | Horňany
    Rozbalit Rozbalit vše Re: SCRIPT : Jak během vteřiny nastavit (pár stovek) windows ...
    Na neprogramátora samozrejme výborný výkon, len mi to uderilo do oka.
    KERNEL ULTRAS video channel >>>
    bambas avatar 22.2.2012 10:22 bambas | skóre: 20 | blog: bambasovo
    Rozbalit Rozbalit vše Re: SCRIPT : Jak během vteřiny nastavit (pár stovek) windows ...
    Jen trosku nechapu, proc je to psany v C++. Proc se nepouziva reg.exe s parametry Add, delte, query, copy, save, atd...? To same nastaveni sluzeb. Vsechno to lze nastavit pres commandline. Tzn pros nevytvorit nejaky bat soubor a v tom to tam sypat? Navic visual studio volnestazitelne ze stranek M$ neni urceno pro komercni sferu - nejsem si tim ale jist na 100%.
    22.2.2012 10:35 tomvec | skóre: 24 | Kojetín
    Rozbalit Rozbalit vše Re: SCRIPT : Jak během vteřiny nastavit (pár stovek) windows ...
    Max napsal:
    Netware neumí spouštět baťáky, dokonce neumí myslím ani exe s parametrem :-/.
    22.2.2012 10:37 Aleš Kapica | skóre: 51 | blog: kenyho_stesky | Ostrava
    Rozbalit Rozbalit vše Re: SCRIPT : Jak během vteřiny nastavit (pár stovek) windows ...
    Vždyť to píše. Pouští to přes netware a ty stroje se mu s bat soubory nebaví.
    bambas avatar 22.2.2012 10:47 bambas | skóre: 20 | blog: bambasovo
    Rozbalit Rozbalit vše Re: SCRIPT : Jak během vteřiny nastavit (pár stovek) windows ...
    Jaj! Sakra, omlouvam se. To jsem asi prehledl :/
    bambas avatar 22.2.2012 10:48 bambas | skóre: 20 | blog: bambasovo
    Rozbalit Rozbalit vše Re: SCRIPT : Jak během vteřiny nastavit (pár stovek) windows ...
    Kazdopadne existuje BAT2EXE converter, ktery udela z batky exac. Taky cesta.
    vladky avatar 22.2.2012 16:06 vladky | skóre: 19
    Rozbalit Rozbalit vše Re: SCRIPT : Jak během vteřiny nastavit (pár stovek) windows ...
    Pokial viem, tak netware dokaze z login scriptu spustat bataky cez # ale treba tu vyskusat. Skus dat nakoniec scriptu #mojscript.bat a na konci scriptu nezabudni exit. Treba sa pohrat s cestami, ale malo by to fungovat.
    Max avatar 22.2.2012 16:20 Max | skóre: 72 | blog: Max_Devaine
    Rozbalit Rozbalit vše Re: SCRIPT : Jak během vteřiny nastavit (pár stovek) windows ...
    Ano, stačí dát křížek a za ním příslušný soubor (exe, bat apod.). Musel jsem se ovšem někdy v minulosti hodně splést, páč teď jsem to ještě zkoušel a baťák se mi spustí. Je mi záhadou, co jsem tenkrát dělal (5 let zpátky), nebo se mezi tím něco změnilo a já už to neřešil :-/.
    Zdar Max
    Měl jsem sen ... :(
    Max avatar 23.2.2012 07:30 Max | skóre: 72 | blog: Max_Devaine
    Rozbalit Rozbalit vše Re: SCRIPT : Jak během vteřiny nastavit (pár stovek) windows ...
    Teď jsem ještě zkoušel s parametrem, tj. nějak takto :
    #C:\windows\system32\cmd.exe \\192.168.0.1\zapis\test.bat
    
    A taktéž to prošlo. Vím, že tenkrát jsem řešil vyskakování oken (nechtěl jsem, aby bylo cokoliv vidět), z toho důvodu jsem nechtěl použít baťáky. Pamatuji si, že mi také nešli spouštět nějaké věci, ovšem používal jsem jiného (staršího) klienta, možná bug :-/. To je jedno.
    Zdar Max
    Měl jsem sen ... :(
    Max avatar 22.2.2012 10:54 Max | skóre: 72 | blog: Max_Devaine
    Rozbalit Rozbalit vše Re: SCRIPT : Jak během vteřiny nastavit (pár stovek) windows ...
    VS Express Edition je free i pro komerční použití, jen postrádá několik zásadních věcí, které pro takovou chabou věc nepotřebuji.
    Netware baťáky spouštět neumí, taktéž ani exe soubory s parametrem. Samozřejmě lze napsat wraper, který ten baťák spustí, ale :
    1) nemám rád, když po spuštění uživateli vyskočí černé okno (cmd), nebo několik za sebou a bliká to na něj jak vyšinutý (částečně lze ošetřit wraperem, ale i tak se mi nepodařilo okno úplně skrýt a vždy problikává)
    2) baťák by volal x krát reg + soubor s exportem klíčů, takto se volá 1x (vlastně 2x, jednou pro uživatele, jednou pro admina) jeden 50KiB exe soubor, který vše zajistí, takže u pomalejších PC, nebo PC na pomalejší síti, to je docela zásadní rozdíl v rychlosti spouštění
    Zdar Max
    Měl jsem sen ... :(
    bambas avatar 22.2.2012 11:44 bambas | skóre: 20 | blog: bambasovo
    Rozbalit Rozbalit vše Re: SCRIPT : Jak během vteřiny nastavit (pár stovek) windows ...
    Jasne, byla to jen poznamka na jine reseni, aniz by clovek musel psat neco v C++, instalovat VS, atd.
    22.2.2012 12:39 idaho
    Rozbalit Rozbalit vše Re: SCRIPT : Jak během vteřiny nastavit (pár stovek) windows ...
    Mam v praci AD, ten skript a klice z registru atd si pekne schovej, budou se Ti hodit. :)

    Založit nové vláknoNahoru

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.