Disassembler

Artificial intelligence is no match for natural stupidity.
09srpna2015

Jak z Windows 10 udělat desktopový systém


Windows 10 je už téměř měsíc v RTM fázi a já byl okolnostmi donucen po půl roce zlomit pečeť mlčenlivosti a podělit o své dojmy a hlavně o hromadu tweaků, které jsem na Win10 za těch posledních několik týdnů nasbíral. Předem upozorňuji, že veškerá nastavení níže jsou čistě otázkou osobních preferencí a že je provádíte na vlastní nebezpečí. Jestli vám některý snippet znásilní manželku nebo zastřelí sousedovic psa, neplačte, sami jste si to zavinili.

Upozornění


⚠ Tento článek je od 15. srpna 2016 neaktualizován a je zůstává zde umístěn pouze pro zachování historického kontextu. Hledáte-li aktuální verzi skriptu popisovaného níže v článku, naleznete ji na mém GitHubu. ⚠

Pro desktopi dobri


Windows 10 je, stejně jako jeho NT 6 předchůdci, velice dobrý operační systém pro domácí a osobní použití. A to říkám jako člověk, který má RHCE certifikaci a každý všední den sedí 8 hodin u RHELů, SLESů a AIXů a sem tam i u nějakého Ubuntu. Několikrát jsem se pokoušel doma „switchovat“ na linux, ale komfortu a plynulosti používání Windows jsem nikdy nedosáhl. Na druhou stranu docela chápu, že na laptopech s půlbajtovou L2 cache a 10otáčkovými pevnými disky je utrpení Windows používat, ale na takových je utrpení používat úplně cokoliv. Jediné dvě věci, které jsou u Windows v posledních letech opravdu nešťastné, jsou nesoudržnost uživatelského rozhraní a čím dál tím horší ochrana soukromí. Windows 10 jsou tak „inovativní“, že při jejich prvotním nastavování mám flashbacky, ve kterých vzpomínám na tu horu tweaků, skriptíků a odrbávek, které jsem používal v dobách WinXP, abych z nich udělal slušně a hlavně neintruzivně pracující operační systém.

Výhody


Je tu ale několik věcí, které se mi ve Windows 10 ohromně líbí. Nejde o žádné převratné novinky, protože na linuxu jsou takové věci od nepaměti, ale jejich integrace do Windows učiní práci s nimi zase o kousek lepší a radostnější. Většinu z nich jsem zmiňoval již v článku o Windows 10 Technical Preview, ale je vidět, že Microsoft si alespoň část feedbacku vzal k srdci, protože některé z funkcí skutečně vyrostly do krásy. První věc, která se mi fakt hodí a kterou používám od prvního dne s desítkami, jsou virtuální plochy. Není u mě nic neobvyklého, že se při práci rozohním tak, že mám otevřených třeba 40 oken. Na jedné ploše nemám šanci se v nich v liště vyznat. Ve Win10 stačí trojkombinace Ctrl+Win+D a voila, hned mám více místa na svůj bordýlek a práci si můžu rozdělit do nějakých logických celků a rozstrkat po plochách. Na rozdíl od Technical Preview už na lištách nevidím okna umístěná na jiných plochách, ale vidím skutečně jen to, co vidět chci. Jsa vlastníkem 2K monitoru, oceňuji pak i možnost přilepovat okna i do rohů a ne jen ke stranám jako ve Win 7 – 8.1. V neposlední řadě mě potěšila i taková pitomost, jako že se příkazovému řádku dá konečně volně měnit i šířka a dá se z něj snadno kopírovat text po řádcích.

Nevýhody


Co mě naopak moc netěší, je všudypřítomná nekoherence vzhledu. Koukněte třeba na tenhle screenshot:

Nesoudržnost UI

Dvě různá menu pro nastavení jednoho počítače, dvě graficky naprosto odlišná rozhraní. Čekal bych, že se třeba z Win8 někdo poučí, ale ne. Navíc jako bonus do Win10 ještě přidali dva různé styly ikon – Nové ploché Win10 ikony a staré plastické, známé od Win7. To mi přijde docela jako UI/UX fail. Dvojitý. Windows 10 pak hraje směrem k mobilním zařízením, takže obsahuje spoustu cloudových hovadinek, mechanismů pro on-line nákup, osobního asistenta (Cortana) a vůbec takových různých věcí, které byste mohli čekat na svém smartphone, ale ne na desktopu. A protože jsou to všechno novinky, u kterých si Microsoft zřejmě není úplně jist, je tady ten dort od pejska a kočičky ještě zalitý hezkou spywarovou polevou, díky které se Microsoftu odesílají data o vašem zařízení, vaší poloze, vašich kontaktech a jiné statistiky užívání. Ani to by nebyl až takový problém. Ten se objeví ve chvíli, kdy zjistíte, že spoustu takových funkcí je možno pouze omezit, ale není možno je jednoduchým způsobem úplně vypnout a je třeba sáhnout někam do hloubi systémových registrů, a že navíc Microsoft (nebo jakýkoliv jiný Apple) takové věci může dělat s úplně klidným svědomím, protože jste souhlasili s licenčním ujednáním, kde je tohle všechno napsané. Kdyby někdo nevěděl, tak to je takové to tlačítko „I agree“ s tím blokem textu nad ním, na který máte vrozenou selektivní slepotu.

Pryč s tím


Tady teprve můj článek asi začne být alespoň trochu zajímavý. V následující záplavě odstavců popíšu, jak nastavuju své instalace Win10. Pokusím se popsat každou funkci, na kterou sahám a důvod, proč tak činím. Nebudu podrobně ukazovat, jak se dá výsledku dosáhnout přes GUI (u některých je to jasné a u jiných se to naopak ani nedá), ale každou akci doplním PowerShell snippetem s kódem pro automatizaci. Zpravidla se jedná o zásahy do registru, ale sem tam je to i zajímavější. A úplně na konci článku přidám souhrnný skript, který automatizuje úplně všechny akce, které se automatizovat dají.

Obsah:

Jak to všechno zase uvést do původního stavu se dozvíte v samostatném článku Jak z Windows 10 udělat desktopový systém II

Soukromí


Pokud jste si při instalaci klikli na „Přizpůsobit nastavení“, měli jste možnost spoustu bonzovacích služeb vypnout už zde. Pokud jste to neudělali, skripty níže vás zbaví těch nejaktivnějších. V případě, že jste si nastavení přizpůsobili, skripty klidně můžete pustit také, nic by se tím změnit ani rozbít nemělo, nicméně pořád platí, že je spouštíte na své vlastní riziko. Některé služby pro vás samozřejmě mohou být užitečné a přínosné, ale já prostě nemám rád, když mi počítač kecá do toho, co zrovna dělám, nebo ještě hůř, když o tom, co zrovna dělám, povídá někomu jinému. A nezapomeňte. To, že jste paranoidní, neznamená, že po vás nejdou.

Vypnutí Telemetry


Telemetry je spyware služba zajišťující sběr dat pro Microsoft Customer Experience Improvement Program. V podstatě jde o to, že shromažďuje údaje o tom, co děláte a jak to děláte, kde, s kým a za kolik, a posílá je Microsoftu. To nechci jednoduše proto, že mám své soukromí rád a navíc mi maminka říkala, že se nemám bavit s cizími lidmi.

# Disable Telemetry
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\DataCollection" -Name "AllowTelemetry" -Type DWord -Value 0
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\DataCollection" -Name "AllowTelemetry" -Type DWord -Value 0
Set-ItemProperty -Path "HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Policies\DataCollection" -Name "AllowTelemetry" -Type DWord -Value 0

Vypnutí Wi-Fi Sense


Wi-Fi Sense je relativně zajímavá služba. Umožňuje sdílení přístupů k Wi-Fi sítím s vašimi přáteli na sociálních sítích, takže v případě, že vás navštíví, bude jim automaticky umožněn přístup k vaší Wi-Fi. Idea je to hezká, ale nikdo neřeší věci jako případný MAC filtr, fakt, že veškerá vaše hesla jsou uložena na serverech Microsoftu tak, aby bylo možno je dešifrovat, a velmi malou možnost ovlivnit co a s kým vlastně sdílíte. To už se mi i WPS zdá bezpečnější, ačkoliv jej na potkání vypínám. Tam obvykle alespoň potřebujete fyzický přístup k hardware. S Wi-Fi Sense stačí jen základy sociálního inženýrství a Microsoft se o zbytek postará za vás. O idiotském nápadu, že opt-out je možný pouze změnou SSID Wi-Fi sítě raději ani nemluvím.

# Disable Wi-Fi Sense
If (!(Test-Path "HKLM:\SOFTWARE\Microsoft\PolicyManager\default\WiFi\AllowWiFiHotSpotReporting")) {
	New-Item -Path "HKLM:\SOFTWARE\Microsoft\PolicyManager\default\WiFi\AllowWiFiHotSpotReporting" -Force | Out-Null
}
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\PolicyManager\default\WiFi\AllowWiFiHotSpotReporting" -Name "Value" -Type DWord -Value 0
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\PolicyManager\default\WiFi\AllowAutoConnectToWiFiSenseHotspots" -Name "Value" -Type DWord -Value 0

Vypnutí SmartScreen Filtru


SmartScreen je bezpečností featura, kterou bych méně počítačově gramotným jedincům nedoporučoval vypínat. SmartScreen kouká na to, na co koukáte vy (webové stránky, stahování souborů) a porovnává s bezpečnostní databází Microsoftu, zda stránky, na které se pokoušíte dostat, nemohou být škodlivé pro váš počítač nebo zda soubor, který jste právě stáhli, je digitálně podepsán platným certifikátem. Stejně jako v předchozích případech, nemám rád, když se má data posílají někam pryč a když mi někdo kecá do řízení.

# Disable SmartScreen Filter
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer" -Name "SmartScreenEnabled" -Type String -Value "Off"
Set-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\AppHost" -Name "EnableWebContentEvaluation" -Type DWord -Value 0

Vypnutí Bingu v nabídce Start


Na WinXP jsem používal Launchy. Stiskl jsem klávesovou zkratku a začal psát název programu, který jsem chtěl spustit. Bylo to daleko rychlejší než ho lovit v nabídce Start myší. Ve Win7 do nabídky Start přibylo vyhledávací pole a Launchy se stalo nepotřebným. Od Win8 do téhož vyhledávání přibyly výsledky z internetu a vyhledávání se stalo nepoužitelným, protože se muselo čekat, až se milý Bing dobingá zpátky s výsledky. Děkuji, nechci.

# Disable Bing Search in Start Menu
Set-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Search" -Name "BingSearchEnabled" -Type DWord -Value 0

Vypnutí navrhovaných aplikací v nabídce Start


Zobrazování reklam a online výsledků vyhledávání jsem již vyřešil. Je tu ale ještě další kanál, skrze který se mi do počítače snaží procpat jedničky a nuly, které nechci. Windows 10 čas od času ve Start menu zobrazí ikonu aplikace, kterou nemáte nainstalovanou a o které si myslí, že byste ji možná ocenili. Já už jsem bohužel takový škarohlíd, že neocením nic.

# Disable Start Menu suggestions
Set-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" -Name "SystemPaneSuggestionsEnabled" -Type DWord -Value 0

Vypnutí zjišťování polohy


Tohle je obyčejná paranoia. Na zařízení, které nemají žádný GPS přijímač nejspíš zbytečné.

# Disable Location Tracking
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Sensor\Overrides\{BFA794E4-F964-4FDB-90F6-51056BFE4B44}" -Name "SensorPermissionState" -Type DWord -Value 0
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\lfsvc\Service\Configuration" -Name "Status" -Type DWord -Value 0

Vypnutí Feedbacku


Tu a tam z oznamovací oblasti vyskočí králík, kousne do mrkve a zeptá se „What’s up, Doc?“. Pak se zeptá na vaše pocity z ovládání systému a s odpovědí odhopká k Microsoftu. Kiww the wabbit!

# Disable Feedback
If (!(Test-Path "HKCU:\SOFTWARE\Microsoft\Siuf\Rules")) {
	New-Item -Path "HKCU:\SOFTWARE\Microsoft\Siuf\Rules" -Force | Out-Null
}
Set-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Siuf\Rules" -Name "NumberOfSIUFInPeriod" -Type DWord -Value 0

Vypnutí Advertising ID


Tohle se vás týká, jen pokud používáte účet Azure AD. V takovém případě vám je asi bezpečnost celkem ukradená, ale kdyby náhodou, tímhle se dá vypnout personalizace reklam.

# Disable Advertising ID
If (!(Test-Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\AdvertisingInfo")) {
	New-Item -Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\AdvertisingInfo" | Out-Null
}
Set-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\AdvertisingInfo" -Name "Enabled" -Type DWord -Value 0

Vypnutí Cortany


SHODAN, ééé... totiž... Cortana je umělá inteligence, která funguje jako osobní asistent. V první fázi sbírá data, aby se dozvěděla o vašich návycích používání zařízení, vašem písmu (píšete-li rukou nebo stylusem), vašich kontaktech, o tom co vyhledáváte na internetu a tak vůbec si o vás udělala obrázek, co jste to za individuum. Ve fázi druhé už ji můžete komandovat přes hlasové rozhraní a ona vám bude běhat pro papuče a vařit kafe. To by všechno bylo bezva, kdyby celý ten systém učení opět neseděl na serverech Microsoftu a všechna vaše data se neposílala přes internet.

# Disable Cortana
If (!(Test-Path "HKCU:\SOFTWARE\Microsoft\Personalization\Settings")) {
	New-Item -Path "HKCU:\SOFTWARE\Microsoft\Personalization\Settings" -Force | Out-Null
}
Set-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Personalization\Settings" -Name "AcceptedPrivacyPolicy" -Type DWord -Value 0
If (!(Test-Path "HKCU:\SOFTWARE\Microsoft\InputPersonalization")) {
	New-Item -Path "HKCU:\SOFTWARE\Microsoft\InputPersonalization" -Force | Out-Null
}
Set-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\InputPersonalization" -Name "RestrictImplicitTextCollection" -Type DWord -Value 1
Set-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\InputPersonalization" -Name "RestrictImplicitInkCollection" -Type DWord -Value 1
If (!(Test-Path "HKCU:\SOFTWARE\Microsoft\InputPersonalization\TrainedDataStore")) {
	New-Item -Path "HKCU:\SOFTWARE\Microsoft\InputPersonalization\TrainedDataStore" -Force | Out-Null
}
Set-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\InputPersonalization\TrainedDataStore" -Name "HarvestContacts" -Type DWord -Value 0

Omezení Windows Update P2P pouze na místní síť


Tohle je pro změnu docela fajn fíčura. Na WinXP a Win7 mě vždycky štvalo, že kontrola a stahování updatů vždycky trvala strašně dlouho, zvlášť v případech, kdy jsem updatoval více počítačů v jeden den. Windows 10 nově umí distribuovat aktualizace peer-to-peer metodou, takže uživatelé, kteří aktualizaci již stáhli a nainstalovali, ji mohou sdílet s těmi, kteří teprve stahují. Navíc je možno sdílení úplně vypnout nebo jej nastavit tak, že se updaty sdílí pouze v rámci místní sítě. Šup tam s tím.

# Restrict Windows Update P2P only to local network
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\DeliveryOptimization\Config" -Name "DODownloadMode" -Type DWord -Value 1
If (!(Test-Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\DeliveryOptimization")) {
	New-Item -Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\DeliveryOptimization" | Out-Null
}
Set-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\DeliveryOptimization" -Name "SystemSettingsDownloadMode" -Type DWord -Value 3

Vypnutí AutoLoggeru


Tady pozor. Hromady webů tvrdí, že ve Windows 10 je vestavěný keylogger. Netvrdím, že není, ale také netvrdím, že zrovna AutoLogger s tím má něco společného. Nebyl jsem se schopen dobrat uspokojivého vysvětlení, proč většina webů radí tehle Event Trace Log blokovat, protože podle MSDN se jedná pouze o diagnostický záznam startu počítače. Mám takové tušení, že někdo viděl slovo Logger s čerstvým datem poslední změny a tak po něm hned skočil. V každém případě, pokud byste jej skutečně chtěli paralyzovat, můžete to udělat následujícím snippetem.

# Remove AutoLogger file and restrict directory
$autoLoggerDir = "$env:PROGRAMDATA\Microsoft\Diagnosis\ETLLogs\AutoLogger"
If (Test-Path "$autoLoggerDir\AutoLogger-Diagtrack-Listener.etl") {
	Remove-Item "$autoLoggerDir\AutoLogger-Diagtrack-Listener.etl"
}
icacls $autoLoggerDir /deny SYSTEM:`(OI`)`(CI`)F | Out-Null

Vypnutí Diagnostics Tracking služby


Úzce souvisí s předchozím. DiagTrack je totiž služba zodpovědná za sběr diagnostických dat a plnění trace logů, zrovna takových jako je AutoLogger. Pokud odstřelíte AutoLogger, budete pravděpodobně chtít vypnout i tuhle službu.

# Stop and disable Diagnostics Tracking Service
Stop-Service "DiagTrack"
Set-Service "DiagTrack" -StartupType Disabled

Vypnutí WAP Push služby


Stejný problém jako u DiagTracku. Mnohými je tato služba označena za keylogger nebo zprostředkovatele nějakého komunikačního kanálu kudy může ošklivý zlý Microsoft šmírovat pohyb vaší myši při hraní Solitaire. Mě naopak docela dává smysl takovou službu v operačním systému pro mobilní zařízení mít. Pamatujete, jak jste na přelomu milénia na Siemensech a Alcatelech honili vtipy v mobilu? Tak to je úplně ten samý protokol WAP jako tenkrát, respektive jeho služby WAP Push (2948/TCP a 2948/UDP) a WAP Push Secure (2949/TCP a 2949/UDP). Dokud nebudu mít detailnější informace, nechám službu raději vypnutou. Na desktopu se 100MBit optickou přípojkou bych ho stejně pravděpodobně nevyužil.

# Stop and disable WAP Push Service
Stop-Service "dmwappushservice"
Set-Service "dmwappushservice" -StartupType Disabled

Úpravy služeb


V následující sekci už se budu zabývat nastavením služeb, které nemá až tak moc společného s ochranou soukromí jako spíš s tím, aby mi počítač nekecal do života a nesnažil se zuby nehty protlačit výchozí hodnoty. Spousta nastavení, která tu upravuju, mají co do činění s bezpečností, takže opět doporučuji se do něj nepouštět, pokud si nejste absolutně jisti, co změnou způsobíte.

Snížení úrovně UAC


User Account Control. Úhlavní nepřítel lidstva od dob Win7. Na jednu stranu chvályhodný bezpečností záměr, na straně druhé docela nešťastné provedení. Ve Windows 7 bylo možno jej beztrestně vypnout a svět se točil dál. U Windows 8 už to bylo o chlup horší, protože Metro aplikace jej vyžadovaly. Naštěstí jsem já nevyžadoval Metro aplikace, takže jsem jej i na Win8 a 8.1 sestřelil úplně. Windows 10 jsou ale tvrdohlavější. UAC je v nich potřeba pro část systémových nastavení (tu část, která nezůstala v ovládacích panelech), a pokud jej vypnete, může se vám stát, že některá okna jen probliknou, případně se odmítnou zobrazit úplně. A co hůř, kalkulačka je ve Win10 Metro aplikace, což teda podělali úplně maximálně, protože to je jedna z mých nejpoužívanějších aplikací. Naštěstí existuje hromada staromilců, takže Win7-style kalkulačku je možno nacpat i do Windows 10. Ale zpět k věci. Pokud UAC nemůžu vypnout úplně, alespoň jej srazím na minimální úroveň, aby na mě se svými okýnky neskákalo.

# Lower UAC level
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" -Name "ConsentPromptBehaviorAdmin" -Type DWord -Value 0
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" -Name "PromptOnSecureDesktop" -Type DWord -Value 0

Zapnutí sdílení namapovaných disků mezi uživateli


Dobrých 80% mé práce se odehrává na sdílených síťových discích. Mimo jiné tam mám i ovladače k hardware, takže bych třeba chtěl, aby si je odtamtud Windows načetly. To ale se zapnutým UAC není možné, protože jsou v platnosti bezpečnostní opatření, která od sebe izolují uživatele. Jako třeba uživatele, který namapoval síťové disky a administrátora se zvýšenými právy, který by ty ovladače ve skutečnosti instaloval. Jak jsem již zmínil, UAC úplně vypnout nemůžu, ale naštěstí ho můžu donutit k předávání síťových jednotek a podobných věcí.

# Enable sharing mapped drives between users
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" -Name "EnableLinkedConnections" -Type DWord -Value 1

Vypnutí sdílení implicitně sdílených položek


Tohle taky ještě trochu patří do soukromí. Každá instalace Windows ve výchozím stavu sdílí všechny své disky, adresář Windows a tiskárny a faxy. Sice se jedná o skryté položky, ale každý, kdo už s nimi někdy přišel do styku tuší, kde je hledat (Nápověda: C$, ADMIN$, FAX$, PRINT$). Ty je pak možno mapovat třeba na vzdálené ploše, nicméně ne vždy je žádoucí aby uživatelé měli plný přístup i k systémovému disku hostitele. Spoustu věcí je sice možno řešit šikovným rozdělením a nastavením oprávnění, ale nevidím důvod vyrábět rovnák na vohejbák. Raději toto výchozí sdílení zruším a vyberu si sám, co chci šířit do světa.

# Disable implicit administrative shares
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" -Name "AutoShareWks" -Type DWord -Value 0

Vypnutí Windows Firewallu


Další služba, která mi kecá do života. Překvapilo mě jak snadné je ji přes PowerShell vypnout.

# Disable Firewall
Set-NetFirewallProfile -Profile * -Enabled False

Dokonce jsem objevil i podobně jednoduchý nePowerShellovský příkaz. Na to, jak si Microsoft hájí svá bezpečnostní řešení, je to až podezřele bezproblémové.

netsh advfirewall set allprofiles state off

Vypnutí Windows Defenderu


Ve Windows 7 byl Defender poměrně primitivní a neužitečný. Pak se vedle něj objevil MS Security Essentials, který si v porovnání s ostatními antiviry vedl docela dobře. Tak dobře, že ho Microsoft protlačil na místo původního Defenderu a aby se to nepletlo, přejmenoval ho taky na Defender. Já osobně už asi pátým rokem používám antivirové řešení Common Sense™ (má perfektní licenční model a doživotní update zdarma), občas proložený nějakou kontrolou NOD32 nebo Malwarebytes antiviry a za celou tu dobu jsem nechytil žádnou breberku. Tvrdohlavě si tedy budu mlít svou a tvrdit, že žádný antivir nepotřebuju.

# Disable Windows Defender
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows Defender" -Name "DisableAntiSpyware" -Type DWord -Value 1
Remove-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" -Name "WindowsDefender" -ErrorAction SilentlyContinue

Vypnutí Nástroje pro odstranení škodlivého softwaru


A když už jsme vypnuli Defender, předpokládá se, že se na internetu umíme trochu chovat a neklikáme na kdejakou napůl svlečenou slečnu. V takovém případě je nám celkem k ničemu asi i Nástroj pro odstranění škodlivého softwaru, který nám Microsoft každý měsíc poctivě posílá v aktualizacích a který jednorázově kontroluje přítomnost malware v systému.

# Disable offering of Malicious Software Removal Tool through Windows Update
If (!(Test-Path "HKLM:\SOFTWARE\Policies\Microsoft\MRT")) {
	New-Item -Path "HKLM:\SOFTWARE\Policies\Microsoft\MRT" | Out-Null
}
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\MRT" -Name "DontOfferThroughWUAU" -Type DWord -Value 1

Vypnutí automatického restartu Windows Update


Automatické aktualizace jako takové mi nevadí. Obzvlášť po všech těch eskapádách za poslední rok a půl rád uvítám nějaké to vypnutí SSLv3 nebo jiné věci, která už měla být dávno pohřbená a místo toho si vesele hnije na čerstvém vzduchu. Ano, občas se zadaří a v updatech dojde nějaký veselý balíček, vinou kterého půlka aplikací nejde nastartovat, ale to se za poslední tři roky stalo snad jen jednou, takže to se do tolerance chyb ještě vleze. Co mě ale na automatických updatech dokáže naštvat je restart z čistého nebe, nejlépe po třech hodinách práce, kterou ještě nemám uloženou. Tímhle tweakem donutím Windows Update, aby oznámilo, že je s instalacemi hotovo a počkalo, až uživatel pošle počítač do restartu sám.

# Disable Windows Update automatic restart
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings" -Name "UxOption" -Type DWord -Value 1

Vypnutí Domácích Skupin


Asi nejsem cílovka, ale od Windows 7 jsem nepochopil k čemu je tohle dobré. Můj pracovní laptop s RHEL 6.6 domácí skupiny neumí, moje Raspberry Pi domácí skupiny neumí a můj telefon s Androidem 4.4 domácí skupiny taky neumí. Všechna uvedená zařízení společně s třemi dalšími počítači s Windows, které se v domácí síti vyskytují, si vystačí s namapováním síťových disků, což je jednorázová akce. V oblasti domácích skupin asi zůstanu nedovzdělán navždy, ale ta ikonka navíc mi prostě zavazí.

# Stop and disable Home Groups services
Stop-Service "HomeGroupListener"
Set-Service "HomeGroupListener" -StartupType Disabled
Stop-Service "HomeGroupProvider"
Set-Service "HomeGroupProvider" -StartupType Disabled

Vypnutí Vzdálené Podpory


Vzdálenou podporu občas potřebuju psychickou nebo finanční. Bohužel tahle funkce ani jednu z nich nenabízí, takže je mi celkem k ničemu.

# Disable Remote Assistance
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Remote Assistance" -Name "fAllowToGetHelp" -Type DWord -Value 0

Zapnutí Vzdálené Plochy


Vzdálenou plochu naproti tomu využívám denně. Jelikož se občas připojuji i z Linuxových systémů podporujících jen stařičký RDP 5 protokol, musím vypnout „ověřování na úrovní sítě“, ať už to znamená cokoliv.

# Enable Remote Desktop w/o Network Level Authentication
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server" -Name "fDenyTSConnections" -Type DWord -Value 0
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" -Name "UserAuthentication" -Type DWord -Value 0

Úpravy uživatelského rozhraní


Následující hromada úprav už se týká jen toho, co oko vidí. Upravuju a přeorganizovávám si zde všelijaké nabídky, schovávám panely a tlačítka, která mě nezajímají, a vůbec si tak zútulňuji UI, aby se mi žilo lépe a radostněji.

Vypnutí Centra Akcí


Tohle! Tenhle hajzl barevnej! Kdo tohle vymyslel, ať mu pochcípají všechny rybičky a šlápne do lejna oběma nohama zaráz. Tahle komponenta je perfektní pro BFU, které fakticky nutí k tomu mít počítač nastavený tak jak říká tatíček Microsoft. Pokud náhodou BFU nejste a některou z hlídaných komponent si vypnete, v tu ránu máte tadtyu potvoru za krkem a už vás buzeruje, že si to máte zase zapnout. A že by se na upozornění dalo kliknout a říct milému centru akcí, že o tom uživatel ví, a ať s tím už neotravuje? Ale kdepak, to by bylo moc jednoduché a mohl by to pak dělat každý. Hezky se musíte proklikat do tadytéhle nabídky v Ovládací panely\Systém a zabezpečení\Zabezpečení a údržba\Změnit nastavení ovládacího panelu Zabezpečení a údržba a uhnat si tenisový loket klikáním na checkboxy.

Hey! Listen! Hey! Listen!

A aby to bylo ještě horší, tak tohle je jediná věc, která z celého tohole kilometrového článku nejde automatizovat, protože k ní neexistuje API a hodnoty checkboxů jsou uloženy v registru v nějakých blobech unikátních pro daný počítač. Grrr.

Tímhle se dá odstranit Centrum Akcí z nástrojové lišty, ale ty checkboxy si prostě musíte poklikat ručně sami.

# Disable Action Center
If (!(Test-Path "HKCU:\SOFTWARE\Policies\Microsoft\Windows\Explorer")) {
	New-Item -Path "HKCU:\SOFTWARE\Policies\Microsoft\Windows\Explorer" | Out-Null
}
Set-ItemProperty -Path "HKCU:\SOFTWARE\Policies\Microsoft\Windows\Explorer" -Name "DisableNotificationCenter" -Type DWord -Value 1
Set-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\PushNotifications" -Name "ToastEnabled" -Type DWord -Value 0

Vypnutí uzamykací obrazovky


Tohle je jen takové hnidopišství. Jednak pro mě není příliš užitečná obrazovka, na které není nic jiného než desetipalcové hodiny a jednak, a to hlavně, se občas loguji do systému dříve, než mi naskočí monitor, tedy poslepu. V případě, že je uzamykací obrazovka na svém místě, sežere mi jeden znak z hesla. V případě, že tam není, je vše v pořádku a heslo jde celé do políčka, kam má. Ovšem jestli je nebo není lock screen aktivní nevidím, dokud se monitor nezapne. A jak říká jeden nejmenovaný český blogger: „Profesionála i milisekundy zdržují.“

# Disable Lock screen
If (!(Test-Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\Personalization")) {
	New-Item -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\Personalization" | Out-Null
}
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\Personalization" -Name "NoLockScreen" -Type DWord -Value 1

Anniversary Update 7.8.2016 - Ve verzích Home a Pro updatovaných na Redstone 1 již tento tweak nefunguje. Dá se ale použít workaround v podobě naplánované úlohy, viz detaily v článku o Anniversary Update.

# Disable Lock screen (Anniversary Update workaround)
$service = New-Object -com Schedule.Service
$service.Connect()
$task = $service.NewTask(0)
$task.Settings.DisallowStartIfOnBatteries = $false
$trigger = $task.Triggers.Create(9)
$trigger = $task.Triggers.Create(11)
$trigger.StateChange = 8
$action = $task.Actions.Create(0)
$action.Path = "reg.exe"
$action.Arguments = "add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Authentication\LogonUI\SessionData /t REG_DWORD /v AllowLockScreen /d 0 /f"
$service.GetFolder("\").RegisterTaskDefinition("Disable LockScreen", $task, 6, "NT AUTHORITY\SYSTEM", $null, 4) | Out-Null

Tento kód již není obyčejnou úpravou nastavení Windows a z toho důvodu je v souhrnném skriptu ve výchozím stavu zakomentován.

Vypnutí autorun a autoplay


Autorun a autoplay jsou dvě funkce pro přehrávání obsahu, které jdou ruku v ruce. Klasický autorun jednoduše donutí operační systém zareagovat na změnu média, tedy třeba vsunutí DVD nebo flash disku. Systém se pak podívá, zda na médiu existuje soubor autorun.inf a podle něj pak médiu nastaví ikonku a přidělí akci na dvojklik, případně další akce do kontextového menu. Autoplay je pak pokročilejší funkce, která se pokusí zjistit typ obsahu média a podle toho spustí aplikaci, která si s daným obsahem nejlépe poradí. Tedy pokud do USBčka zabodnete flešku plnou MP3, nabídne spuštění hudebního přehrávače. Pokud připojíte foťák s fotkami z dovolené, nastartuje váš výchozí prohlížeč obrázků. A tak dále. Pokud vám však rukama (a počítačem) prochází velké množství neznámých nebo potenciálně vadných médií, asi nebudete příliš šťastní, když se Windows budou pokoušet spustit každou kravinu. Autoplay tu má jen klasické zapnuto/vypnuto. Autorun lze naproti tomu vypínat buď na jednotlivých jednotkách anebo ještě lépe, pro jednotlivé typy médií. Hodnotou registru je pak bitmaska, která se skládá z následujících flagů:

0x01 DRIVE_UNKNOWN	- Neznámé typy jednotek
0x02 DRIVE_NO_ROOT_DIR	- Jednotky bez kořenového adresáře
0x04 DRIVE_REMOVABLE	- Vyměnitelné jednotky (flashky, čtečky karet, disketovky atd.)
0x08 DRIVE_FIXED	- Pevné disky
0x10 DRIVE_REMOTE	- Síťové jednotky
0x20 DRIVE_CDROM	- CD, DVD a BluRay jednotky
0x40 DRIVE_RAMDISK	- RAM disky
0x80 DRIVE_FUTURE	- Rezervováno pro budoucí využití

Chcete-li tedy přistřihnout křidýlka úplně všem, vaše hodnota pak bude 0xFF, čili 255 v desítkové soustavě.

# Disable Autoplay
Set-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers" -Name "DisableAutoplay" -Type DWord -Value 1

# Disable Autorun for all drives
If (!(Test-Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer")) {
	New-Item -Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer" | Out-Null
}
Set-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer" -Name "NoDriveTypeAutoRun" -Type DWord -Value 255

Vypnutí funkce „Jedním prstem“


To jste takhle uprostřed nějaké onlinové řežby, mydlíte nepřátele hlava nehlava a aby oni nemohli mydlit vás, tak jim zručně uhýbáte, skáčete a krčíte se. A protože většina her má přikrčení ve výchozím stavu namapováno na levém shiftu a vy jste fakt strašně rychlí a celí zapálení do hry, protože už máte skoro vyhráno, stane se vám, že jej během pár sekud stisknete pětkrát po sobě. A v tu chvíli jste zpátky na ploše a Windows se vás ptají, zda byste rádi chtěli zapnout funkci „Jedním prstem“, která usnadňuje ovládání počítače osobám s různým postižením a umožňuje vyťukávat klávesové zkratky postupnými stisky. Váš turnaj je samozřejmě v troskách a z úst se vám linou slova, při kterých se slušní lidé červenají.

# Disable Sticky keys prompt
Set-ItemProperty -Path "HKCU:\Control Panel\Accessibility\StickyKeys" -Name "Flags" -Type String -Value "506"

Skrytí vyhledávacího tlačítka / boxu


Ve výchozí instalaci Windows 10 je v levé části lišty vyhledávací box nebo tlačítko. Jak jsem zmínil výše, vyhledávám přes Start menu, protože stisknout jednu klávesu je pro mě jednodušší než lovit myší nějaký obrázek. Nechci tedy ani tlačítko, ani box.

# Hide Search button / box
Set-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Search" -Name "SearchboxTaskbarMode" -Type DWord -Value 0

Skrytí tlačítka Task View


Hned vedle výše zmíněného tlačítka pro vyhledávání je i tlačítko pro onu novou, mnou oblibovanou, featuru virtuálních ploch. Tlačítko tam je nejspíš proto, aby se lidi o nové funkci dozvěděli, ale já už jsem velkej kluk a umím používat klávesové zkratky. Ctrl+Win+D pro novou plochu, Ctrl+Win+šipky pro navigaci mezi plochami, Ctrl+Win+F4 pro zavření plochy a Win+Tab pro zobrazení přehledu ploch a přesouvání oken mezi nimi. Na to poslední bohužel zkratka není. Snad příště.

# Hide Task View button
Set-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" -Name "ShowTaskViewButton" -Type DWord -Value 0

Zmenšení ikon v liště a zobrazení popisků


Mnoho aplikací, které používám nebo vyvíjím, nemá hezké velké barevné ikonky. V případě, že některá z nich ikonky náhodou má, nezřídka se stává, že ji mám otevřenou vícekrát a potřebuji se rychle přepínat mezi jednotlivými instancemi. Výchozí nastavení mě nutí sjet myší na lištu, kliknout na ikonu nebo chvilku počkat, za vehementního překreslování náhledů najít to správné okno a ještě jednou na něj kliknout, jakože ho fakt chci. To mi připadá poněkud komplikované, takže mám radši, když vidím všechna okna i s popisky, jako brambory v řádku vedle sebe.

# Show small icons in taskbar
Set-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" -Name "TaskbarSmallIcons" -Type DWord -Value 1

# Show titles in taskbar
Set-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" -Name "TaskbarGlomLevel" -Type DWord -Value 1

Zobrazení všech ikon v systray


Nepatřím mezi ty, kteří si do počítače natáhnou kdejakou potvoru s ikonkou systray a nechají ji tam sedět. V současné době mám v nástrojové liště 8 ikon, z nichž 8 používám. Nechci tedy, aby za mě někdo jiný rozhodoval, co uvidím nebo ne. Chci vidět všechno.

# Show all tray icons
Set-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer" -Name "EnableAutoTray" -Type DWord -Value 0

Zobrazení přípon souborů známých typů


Jméno a hezký obrázek mi nestačí, chci vidět i příjmení a číslo občanky. Tohle není rande, tady se dělá business.

# Show known file extensions
Set-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" -Name "HideFileExt" -Type DWord -Value 0

Zobrazení skrytých souborů


Chci vidět všechno, povídám. Všechnooo! Teda až na systémové soubory. Systémové soubory jsou jako trpaslíci. Ty potvory vám vlezou všude.

# Show hidden files
Set-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" -Name "Hidden" -Type DWord -Value 1

Změna výchozího pohledu Průzkumníka


Jak jsem již zmínil, 80% mé práce probíhá na síťových discích a tak nějak jsem si zvykl, že když přes Win+E otevřu nové okno Průzkumníka, můžu hned kliknout na disk a pokračovat vesele dál. Tady mi místo toho vyskočí nějaký Rychlý přístup s osobními složkami a posledními použitými soubory. Ty ale vůbec nechci, takže váš rychlý přístup pro mě teda není moc rychlý. Raději chci vidět diskové jednotky.

# Change default Explorer view to This PC
Set-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" -Name "LaunchTo" -Type DWord -Value 1

Zobrazení ikony „Tento Počítač“ na ploše


OK, vzhledem k poslednímu řečenému uznávám, že tohle je taková zvláštnost. Průzkumníka otevírám přes Win+E, ale pokud jsem zrovna na ploše, jsem zvyklý, že vlevo nahoře je ikona, přes kterou se do něj dostanu taky. Navíc se z ní přes pravý klik můžu dostat i do správy počítače. Když tam není, mám neodbytný pocit, že mi něco chybí.

# Show This PC shortcut on desktop
If (!(Test-Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\HideDesktopIcons\ClassicStartMenu")) {
	New-Item -Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\HideDesktopIcons\ClassicStartMenu" | Out-Null
}
Set-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\HideDesktopIcons\ClassicStartMenu" -Name "{20D04FE0-3AEA-1069-A2D8-08002B30309D}" -Type DWord -Value 0
Set-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\HideDesktopIcons\NewStartPanel" -Name "{20D04FE0-3AEA-1069-A2D8-08002B30309D}" -Type DWord -Value 0

Skrytí ikon knihoven z přehledu disků


Výchozí pohled průzkumníka mám tedy nastavený tak, abych viděl diskové jednotky, ale od Windows 8 jsou zde i další příživníci v podobě uživatelských knihoven. Nejsem úplně nadšen, když mi někdo nutí svůj způsob třídění a moje fotky jsou stejně ve složce Fotky na NASu, takže tam ty rozkošné malé ikonky nechci.

# Remove Desktop icon from This PC
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FolderDescriptions\{B4BFCC3A-DB2C-424C-B029-7FE99A87C641}\PropertyBag" -Name "ThisPCPolicy" -Type String -Value "Hide"
Set-ItemProperty -Path "HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Explorer\FolderDescriptions\{B4BFCC3A-DB2C-424C-B029-7FE99A87C641}\PropertyBag" -Name "ThisPCPolicy" -Type String -Value "Hide"

# Remove Documents icon from This PC
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FolderDescriptions\{f42ee2d3-909f-4907-8871-4c22fc0bf756}\PropertyBag" -Name "ThisPCPolicy" -Type String -Value "Hide"
Set-ItemProperty -Path "HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Explorer\FolderDescriptions\{f42ee2d3-909f-4907-8871-4c22fc0bf756}\PropertyBag" -Name "ThisPCPolicy" -Type String -Value "Hide"

# Remove Downloads icon from This PC
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FolderDescriptions\{7d83ee9b-2244-4e70-b1f5-5393042af1e4}\PropertyBag" -Name "ThisPCPolicy" -Type String -Value "Hide"
Set-ItemProperty -Path "HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Explorer\FolderDescriptions\{7d83ee9b-2244-4e70-b1f5-5393042af1e4}\PropertyBag" -Name "ThisPCPolicy" -Type String -Value "Hide"

# Remove Music icon from This PC
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FolderDescriptions\{a0c69a99-21c8-4671-8703-7934162fcf1d}\PropertyBag" -Name "ThisPCPolicy" -Type String -Value "Hide"
Set-ItemProperty -Path "HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Explorer\FolderDescriptions\{a0c69a99-21c8-4671-8703-7934162fcf1d}\PropertyBag" -Name "ThisPCPolicy" -Type String -Value "Hide"

# Remove Pictures icon from This PC
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FolderDescriptions\{0ddd015d-b06c-45d5-8c4c-f59713854639}\PropertyBag" -Name "ThisPCPolicy" -Type String -Value "Hide"
Set-ItemProperty -Path "HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Explorer\FolderDescriptions\{0ddd015d-b06c-45d5-8c4c-f59713854639}\PropertyBag" -Name "ThisPCPolicy" -Type String -Value "Hide"

# Remove Videos icon from This PC
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FolderDescriptions\{35286a68-3c57-41a1-bbb1-0eae73d76c95}\PropertyBag" -Name "ThisPCPolicy" -Type String -Value "Hide"
Set-ItemProperty -Path "HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Explorer\FolderDescriptions\{35286a68-3c57-41a1-bbb1-0eae73d76c95}\PropertyBag" -Name "ThisPCPolicy" -Type String -Value "Hide"

Přidání sekundární anglické klávesnice


Programuju a sysadminuju. Znaky jako backtick, tilda, zavináč, mřížka, dolar, stříška, ampersand, apostrof, zpětné lomítko nebo svislítko je neporovnatelně jednodušší psát na anglické klávesnici. A pokud zrovna neprogramuju a neadminuju, většinou si vystačím s WASD, shiftem a controlem. Ty jsou na obou klávesnicích stejné.

# Add secondary en-US keyboard
$langs = Get-WinUserLanguageList
$langs.Add("en-US")
Set-WinUserLanguageList $langs -Force

Zapnutí NumLocku po startu


Na četné žádosti přidávám 7.8.2016 zapnutí NumLocku, nicméně ve výchozím stavu tuto část nechávám zakomentovanou. Důvod je vcelku pragmatický. Často Windows instaluju na laptopy, které nemají numerickou část klávesnice, ale NumLock i přesto mají. Pokud je zapnutý, místo znaků v pravé části alfanumerické klávesnice se píšou číslice, takže z „Ahoj mami“ vznikne „Ah61 0a05“, což teda rozhodně za výhru nepovažuju. Krom toho tu a tam nastavení klávesnice občas przní nějaké proprietární ovladače a to radši ani nezmiňuju, že do toho ještě může kecat i BIOS. Výchozí stav NumLocku je určen bitmaskou uloženou v klíči InitialKeyboardIndicatorsv registru. V bitmasce můžou bt nastaveny hodnoty 0 pro „NumLock vždy vypnut“, 2 pro „NumLock vždy zapnut“ a 2147483648 pro „nastav tuhle hodnotu jen pokud nemá uživatel uloženo něco jiného“. Primitivní úkol se tak rázem trochu komplikuje, protože není vždy jasné, jaká je výchozí hodnota té či oné konfigurace. Pro nastavení zapínání NumLocku bych tedy volil následující

# Enable NumLock after startup
If (!(Test-Path "HKU:")) {
	New-PSDrive -Name HKU -PSProvider Registry -Root HKEY_USERS | Out-Null
}
Set-ItemProperty -Path "HKU:\.DEFAULT\Control Panel\Keyboard" -Name "InitialKeyboardIndicators" -Type DWord -Value 2147483650

Což v praxi znamená, že NumLock je zapnutý po startu systému, předtím, než se přihlásí uživatel. Po přihlášení se ale už vezme poslední stav nastavený pro konkrétního uživatele, takže pokud se naposledy odhlásil s vypnutým NumLockem, bude vypnutý i teď a uživatel si jej musí ručně zapnout. Pokud se naposledy uživatel odhlásil se zapnutým NumLockem, bude jej mít zapnutý i nadále. A kdyby to náhodou někomu nefungovalo, může hodnotu změnit na 2, čímž by měl zapnutí NumLocku vynutit ve všech případech.

Úpravy aplikací a komponent


Na závěr trocha úklidu. Hromadu aplikací, které mi Microsoft milostivě daroval, nikdy nepoužiju, takže je s klidným srdcem odstraním. Dokonce k tomu ani nepotřebuju Evropskou unii a Ballot screen.

Vypnutí OneDrive


OneDrive je Microsoftí obláčkový systém. Tohle by částečně mělo patřit i do prvního bloku, kde jsem řešil soukromí a bezpečnost, ale jelikož se celý ten cirkus dá odinstalovat jako aplikace, popisuju ho až tady. Základní poučka pro služby v cloudu je, že nic jako cloud neexistuje. Prostě je to jen počítač někoho jiného. Ukládáte si fotky z dovolené u souseda v PC? Jestli ne, tak byste nemuseli ani u Microsoftu. A pokud chcete mít soubory dostupné odkudkoliv, jsou tu řešení jako ownCloud, který je i přes cloud v názvu jenom jednoduchá blboučká aplikace, běžící na PHP a webovém serveru dle vaší libosti. Pokud si ale nejste jisti, jestli OneDrive budete někdy používat a irituje vás přebytečná ikonka v průzkumníku, je možno jej zatím jen vypnout.

# Disable OneDrive
If (!(Test-Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\OneDrive")) {
	New-Item -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\OneDrive" | Out-Null
}
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\OneDrive" -Name "DisableFileSyncNGSC" -Type DWord -Value 1

Odstranění OneDrive


Pokud si ale jste naprosto jisti, že žádné mraky v počítači nechcete, můžete jej úplně odistalovat a jeho soubory smazat.

# Uninstall OneDrive
Stop-Process -Name OneDrive -ErrorAction SilentlyContinue
Start-Sleep -s 3
$onedrive = "$env:SYSTEMROOT\SysWOW64\OneDriveSetup.exe"
If (!(Test-Path $onedrive)) {
	$onedrive = "$env:SYSTEMROOT\System32\OneDriveSetup.exe"
}
Start-Process $onedrive "/uninstall" -NoNewWindow -Wait
Start-Sleep -s 3
Stop-Process -Name explorer -ErrorAction SilentlyContinue
Start-Sleep -s 3
Remove-Item "$env:USERPROFILE\OneDrive" -Force -Recurse -ErrorAction SilentlyContinue
Remove-Item "$env:LOCALAPPDATA\Microsoft\OneDrive" -Force -Recurse -ErrorAction SilentlyContinue
Remove-Item "$env:PROGRAMDATA\Microsoft OneDrive" -Force -Recurse -ErrorAction SilentlyContinue
If (Test-Path "$env:SYSTEMDRIVE\OneDriveTemp") {
	Remove-Item "$env:SYSTEMDRIVE\OneDriveTemp" -Force -Recurse -ErrorAction SilentlyContinue
}
If (!(Test-Path "HKCR:")) {
	New-PSDrive -Name HKCR -PSProvider Registry -Root HKEY_CLASSES_ROOT | Out-Null
}
Remove-Item -Path "HKCR:\CLSID\{018D5C66-4533-4307-9B53-224DE2ED1FE6}" -Recurse -ErrorAction SilentlyContinue
Remove-Item -Path "HKCR:\Wow6432Node\CLSID\{018D5C66-4533-4307-9B53-224DE2ED1FE6}" -Recurse -ErrorAction SilentlyContinue

Odstranění výchozích Microsoft aplikací


Metro aplikace. To určitě. Seřaďte je ke zdi.

# Uninstall default Microsoft applications
Get-AppxPackage "Microsoft.3DBuilder" | Remove-AppxPackage
Get-AppxPackage "Microsoft.BingFinance" | Remove-AppxPackage
Get-AppxPackage "Microsoft.BingNews" | Remove-AppxPackage
Get-AppxPackage "Microsoft.BingSports" | Remove-AppxPackage
Get-AppxPackage "Microsoft.BingWeather" | Remove-AppxPackage
Get-AppxPackage "Microsoft.Getstarted" | Remove-AppxPackage
Get-AppxPackage "Microsoft.MicrosoftOfficeHub" | Remove-AppxPackage
Get-AppxPackage "Microsoft.MicrosoftSolitaireCollection" | Remove-AppxPackage
Get-AppxPackage "Microsoft.Office.OneNote" | Remove-AppxPackage
Get-AppxPackage "Microsoft.People" | Remove-AppxPackage
Get-AppxPackage "Microsoft.SkypeApp" | Remove-AppxPackage
Get-AppxPackage "Microsoft.Windows.Photos" | Remove-AppxPackage
Get-AppxPackage "Microsoft.WindowsAlarms" | Remove-AppxPackage
Get-AppxPackage "Microsoft.WindowsCamera" | Remove-AppxPackage
Get-AppxPackage "microsoft.windowscommunicationsapps" | Remove-AppxPackage
Get-AppxPackage "Microsoft.WindowsMaps" | Remove-AppxPackage
Get-AppxPackage "Microsoft.WindowsPhone" | Remove-AppxPackage
Get-AppxPackage "Microsoft.WindowsSoundRecorder" | Remove-AppxPackage
Get-AppxPackage "Microsoft.XboxApp" | Remove-AppxPackage
Get-AppxPackage "Microsoft.ZuneMusic" | Remove-AppxPackage
Get-AppxPackage "Microsoft.ZuneVideo" | Remove-AppxPackage
Get-AppxPackage "Microsoft.AppConnector" | Remove-AppxPackage
Get-AppxPackage "Microsoft.ConnectivityStore" | Remove-AppxPackage
Get-AppxPackage "Microsoft.Office.Sway" | Remove-AppxPackage
Get-AppxPackage "Microsoft.Messaging" | Remove-AppxPackage
Get-AppxPackage "Microsoft.CommsPhone" | Remove-AppxPackage
Get-AppxPackage "9E2F88E3.Twitter" | Remove-AppxPackage
Get-AppxPackage "king.com.CandyCrushSodaSaga" | Remove-AppxPackage
Get-AppxPackage "4DF9E0F8.Netflix" | Remove-AppxPackage
Get-AppxPackage "Drawboard.DrawboardPDF" | Remove-AppxPackage
Get-AppxPackage "Microsoft.MicrosoftStickyNotes" | Remove-AppxPackage
Get-AppxPackage "Microsoft.OneConnect" | Remove-AppxPackage
Get-AppxPackage "D52A8D61.FarmVille2CountryEscape" | Remove-AppxPackage
Get-AppxPackage "GAMELOFTSA.Asphalt8Airborne" | Remove-AppxPackage
Get-AppxPackage "Microsoft.WindowsFeedbackHub" | Remove-AppxPackage

Vypnutí Xbox DVR


V případě, že si společně s Metro aplikacemi odinstalujete i Xbox App, zůstanou vám na Game baru viset zbytečné ikonky pro Xbox DVR, což je utilita pro vytváření screenshotů a videí z počítačových her a dalších aplikací. Pokud vás nefunkční DVR obšťastňuje svou přítomností a chtěli byste s tím něco udělat, pokračujte následující úpravou.

# Disable Xbox DVR
If (!(Test-Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\GameDVR")) {
	New-Item -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\GameDVR" | Out-Null
}
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\GameDVR" -Name "AllowGameDVR" -Type DWord -Value 0

Odstranění Windows Media Playeru


Windows Media Player je relativně použitelný přehrávač, ale pořád existuje přehršel videí z divokých let, kdy byly v kurzu žabomyší války DivX vs. XviD, QuickTime vs. RealMedia a dalších obskurních formátů. S takovými si obvykle bohužel neporadí. Osobně si vystačím s VLC Playerem na videa a Foobar2000 na hudbu. Nepotřebuju si plevelit systém instalací dalších kodeků a filtrů a jánevímčehoještě a Windows Media Player tak prostě nepotřebuju.

# Uninstall Windows Media Player
dism /online /Disable-Feature /FeatureName:MediaPlayback /Quiet /NoRestart

Odstranění klienta Pracovních Složek


Tohle je tak trochu i pojistka před ukliknutím. Pamatujete na Soubory Offline? To byla taková ptákovina, která umožňovala označit soubor na sdíleném disku jako dostupný offline a on se uložil někde lokálně a pak byl fakt dostupný offline. Jako milý vedlejší efekt to způsobovalo zamrzání systému při práci se sítí, nežádoucí přepisování onoho označeného souboru novější nebo starší verzí téhož souboru, nemožnost dostat se na sdílené úložiště pro soubor aktuální a v případě, že jste takhle omylem označili celý share tak i nedostatek místa na disku. Jako další z mnoha funkcí systému Windows to pro někoho jistě může být užitečné. Pro mě ne.

# Uninstall Work Folders Client
dism /online /Disable-Feature /FeatureName:WorkFolders-Client /Quiet /NoRestart

Instalace linuxového subsystému


Novinka v Anniversary Update (Redstone 1). Trochu jsem se o ní rozpovídal v samostatném článku věnujícím se Anniversary Update, takže tady jen stroze kód pro zapnutí development módu a instalaci subsystému. Ve výchozím stavu je ve skriptu zakomentovaný, protože tady taková legrace určitě není pro každého.

# Install Linux Subsystem
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\AppModelUnlock" -Name "AllowDevelopmentWithoutDevLicense" -Type DWord -Value 1
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\AppModelUnlock" -Name "AllowAllTrustedApps" -Type DWord -Value 1
dism /online /Enable-Feature /FeatureName:Microsoft-Windows-Subsystem-Linux /Quiet /NoRestart

Zprovoznění Windows Photo Vieweru


Windows 7 a 8 v sobě měly integrovaný prohlížeč obrázků. Nebyla to sice žádná kdovíjak funkcemi nabitá aplikace, ale na prohlížení a otáčení fotek mnohým bohatě stačila. V desítkách je výchozím prohlížečem fotek aplikace, nápaditě nazvaná Fotky. Pokud ale odeberete Metro aplikace, je jedinou zbývající možností vysoce profesionální grafický nástroj zvaný Malování. Windows Photo Viewer prostě zmizel. Anebo nezmizel? photoviewer.dll ve Win10 pořád je, akorát se jej nikdo neobtěžoval vytáhnout ven mezi použitelné aplikace. To hravě napravíme. Tímhle kouskem nastavíte Photo Viewer jako výchozí aplikaci pro grafické formáty BMP, GIF, JPG a PNG, tedy ty nejpoužívanější. TIF ho z jakéhosi podivného důvodu již jako výchozí nastaven má.

# Set Photo Viewer as default for bmp, gif, jpg and png
If (!(Test-Path "HKCR:")) {
	New-PSDrive -Name HKCR -PSProvider Registry -Root HKEY_CLASSES_ROOT | Out-Null
}
ForEach ($type in @("Paint.Picture", "giffile", "jpegfile", "pngfile")) {
	New-Item -Path $("HKCR:\$type\shell\open") -Force | Out-Null
	New-Item -Path $("HKCR:\$type\shell\open\command") | Out-Null
	Set-ItemProperty -Path $("HKCR:\$type\shell\open") -Name "MuiVerb" -Type ExpandString -Value "@%ProgramFiles%\Windows Photo Viewer\photoviewer.dll,-3043"
	Set-ItemProperty -Path $("HKCR:\$type\shell\open\command") -Name "(Default)" -Type ExpandString -Value "%SystemRoot%\System32\rundll32.exe `"%ProgramFiles%\Windows Photo Viewer\PhotoViewer.dll`", ImageView_Fullscreen %1"
}

A tímhle snippetem umožníte zobrazení Photo Vieweru v nabídce Otevřít v programu v případě, že byste zakopli o nějaký grafický formát, který Photo Viewer umí zobrazit, ale není s ním asociovaný.

# Show Photo Viewer in "Open with..."
If (!(Test-Path "HKCR:")) {
	New-PSDrive -Name HKCR -PSProvider Registry -Root HKEY_CLASSES_ROOT | Out-Null
}
New-Item -Path "HKCR:\Applications\photoviewer.dll\shell\open\command" -Force | Out-Null
New-Item -Path "HKCR:\Applications\photoviewer.dll\shell\open\DropTarget" -Force | Out-Null
Set-ItemProperty -Path "HKCR:\Applications\photoviewer.dll\shell\open" -Name "MuiVerb" -Type String -Value "@photoviewer.dll,-3043"
Set-ItemProperty -Path "HKCR:\Applications\photoviewer.dll\shell\open\command" -Name "(Default)" -Type ExpandString -Value "%SystemRoot%\System32\rundll32.exe `"%ProgramFiles%\Windows Photo Viewer\PhotoViewer.dll`", ImageView_Fullscreen %1"
Set-ItemProperty -Path "HKCR:\Applications\photoviewer.dll\shell\open\DropTarget" -Name "Clsid" -Type String -Value "{FFE2A43C-56B9-4bf5-9A79-CC6D4285608A}"

Zapnutí boot menu klávesou F8


Když jste na starších verzích Windows při startu mačkali F8 (v praxi to vypadalo zhruba takto), dostali jste se do boot menu, skrze které bylo možno spustit systém v nějakém zvláštním režimu, typicky třeba v nouzovém. To se hodilo zejména při řešení problémů, kdy například systém po zavedení padal do BSOD nebo se nezavedly grafické ovladače nebo se naopak zavedla tuna malware. Když při startu mačkáte F8 na Windows 10, překvapivě se nestane vůbec nic. Takže šup tam se starým módem. Ale dejte si pozor, pokud používáte multiboot nebo nějakou nestandardní konfiguraci diskových oddílů. V takovém případě je potřeba nejprve pustit bcdedit a zjistit, která sekce zavaděče se skutečně používá.

# Enable F8 boot menu options
bcdedit /set `{current`} bootmenupolicy Legacy

All-in-one


No a to je vše, přátelé. Chcete-li mít nastavené Windows 10 po Disassemblerovsku, zaskočte si pro aktuální verzi skriptu na můj GitHub, upravte si skript podle svého a poté jej můžete vesele předhodit PowerShellu. To uděláte nejjednodušeji tak, že na skript klepnete pravým tlačítkem myši a z kontextové nabídky vyberte Run with PowerShell.

Spuštění PowerShell skriptu

Poté vás PowerShell upozorní, že současné nastavení nepovoluje spouštění skriptů a zeptá se vás, zda chcete skript skutečně spustit. To mu odkývejte stiskem klávesy „y“ a enterem. Nakonec už jen potvrdíte dotaz UAC na zvýšení oprávnění.

Spuštění PowerShell skriptu

A nezapomeňte si pak ručně poklikat tu hromadu checkboxů v ovládacím panelu Zabezpečení a údržba.

Předpokládám, že pár tweaků ještě objevím, takže článek, jakožto i souhrnný skript, budu udržovat aktualizovaný tak dlouho, jak mě to bude bavit ale jelikož údržba článku vyžaduje více pozornosti, než kolik jsem ochoten této volnočasové aktivitě věnovat, článek nebudu nadále aktualizovat a ve vývoji a údržbě budu pokračovat pouze na svém GitHubu. A nezapomeňte, veškeré akce provádíte na svoje vlastní triko. Jestli se něco pokazí, budu dělat, že vás neznám a nejspíš to bude i pravda. Zakomentované snippety umožňující uvedení do původního stavu naleznete ve skriptu také a navíc jsou popsány i v samostatném článku Jak z Windows 10 udělat desktopový systém II.

V případě, že vám některý ze skriptů usnadnil život, můžete mi skrze Flattr nebo PayPal přispět na pivo a párek.

Update a changelog


Děkuji všem za ohromný zájem o tento článek. Během prvních pěti dnů od publikace přilákal tolik návštěvníků, jako celý zbytek mého blogu za poslední tři roky dohromady. Našel jsem ještě pár vychytávek a jak jsem slíbil, přidávám je do článku i souhrnného skriptu.

Verze 1.1, 2015-08-13

Verze 1.1a, 2015-08-13

Verze 1.2, 2015-10-13

Verze 1.3, 2015-12-13

Verze 1.4, 2016-01-16

Verze 1.5, 2016-06-08

Verze 1.6, 2016-08-07

Verze 1.6a, 2016-08-13

Verze 1.7, 2016-08-15