Disassembler

Artificial intelligence is no match for natural stupidity.
07srpen2016

Windows 10 Anniversary Update


Windows 10 Anniversary Update (aka Redstone 1), které mohli Microsoftí insideři postupně testovat od dubna letošního roku, je konečně venku a od začátku minulého týdne se tlačí do počítačů po celém světě. V závislosti na tom se moje mailová schránka plní upozorněními na nové komentáře u článku Jak z Windows 10 udělat desktopový systém (který je mimochodem také již rok starý) a občas i nářky některých uživatelů, že jim po updatu přestalo jet to či ono. Ještě štěstí, že uživatelskou podporu neprovozuju, jinak by mi jich bylo skoro i líto.

Co je nového?


Nová verze desítek, nesoucí číselné označení 1607 (build 14393) navazuje na dlouholetou tradici překopávání uživatelského rozhraní. Vesměs bych se však přiklonil k názoru, že výroční změny v UI většinu nabídek, v čele s panelem nastavení, zpřehlednily. Mimo šoupání s ovládacími prvky ale Redstone 1 taky přináší spoustu nových a místy i užitečných fíčur. Tak třeba mnou oblibované virtuální plochy nově umí pinning. Můžete tedy přišpendlit okno tak, aby bylo viditelné na všech plochách, což je extrémně užitečné například u různých instant messaging aplikací. Šoupátko hlasitosti nově umožňuje bezbolestně přepínat výstupní zařízení. Prohlížeč Edge konečně podporuje rozšíření. Také umí zobrazit historii stránek otevřených v aktuálním tabu, což je funkce naprosto běžná snad ve všech ostatních majoritních prohlížečích. Přibylo Windows Ink, což je nové vylepšení pro podporu ovládání stylusem, skrze které si v dedikovaném pracovním prostoru můžete zapisovat poznámky, matlat náčrtky nebo třeba anotovat snímky obrazovky. Pak se mezi novými funkcemi objevují také nějaké mobilní záležitosti jako třeba ještě širší integrace Cortany nebo nová aplikace Connect, která umožňuje bezdrátově promítat a ovládat plochu Windowsího smartphone na desktop PC bez nutnosti nějakých dokovaček nebo Miracast adaptérů. No a samozřejmě nemůžu opomenout znovu zavedenou podporu unixového (resp. linuxového) subsystému v podobě emulovaného Ubuntu. Tomu se budu trochu více věnovat níže v článku.

Samozřejmě se najde i pár změn k horšímu. Microsoft si řekl, že s verzí Pro se uživatelé asi začali cítit moc pohodlně a tak v těchto edicích zakázal možnost vypnutí několika obtěžujících vlastností, čímž ji velmi pomalým tempem degraduje na Home edici. Nedá se nadále vypnout Microsoft Consumer Experience, skrze který se vám do počítače tlačí aplikace třetích stran, jako třeba Candy Crush, bez které se jistě nikdo neobejde. Nedají se vypnout tipy k ovládání, takže Windows vám tu a tam můžou kecat do života a radit kam máte klikat a co mačkat, abyste dosáhli úkonu, který vůbec nepotřebujete udělat. Nedá se (nenásilně) vypnout Windows Store a zobrazování návrhů v něm. A v neposlední řadě, nejméně intruzivní věc, na kterou si u mě ale paradoxně stěžuje nejvíce uživatelů – nedá se jednoduše vypnout Lock Screen, takže při přihlašování a odemykání obrazovky je nutno udělat zbytečný klik nebo dva navíc.

GNU/Windows


Jelikož neprovozuju webík pro BFU, kopnu většinu výše zmíněných věcí do kouta a hned z fleku se budu věnovat featuře, která mi v Anniversary Update nejvíc imponuje. Windows v sobě od verze NT 4.0 až do verze 7, resp. 2008 R2 měly zašitou funkci „Subsystém pro unixové aplikace“ (SUA), která se dala zapnout skrze Programy a funkce > Zapnout nebo vypnout funkce systému Windows. Po její aktivaci se v příkazovém řádku zpřístupnily základní linuxové příkazy (cat, ls, grep), systém se naučil dorozumívat se síťovými disky skrze NFS protokol a vůbec tak nějak trochu zunixovatěl. Kdo někdy na Windows potřeboval dávkově zpracovat hromadu souborů a použít k tomu regulární výrazy ví, že se základními nástroji dodávanými s Windows je to praktický neřešitelný úkol. Proto mě celkem zamrzelo, že ve Windows 8/2012 byla oficiální podpora zrušena. A tu se najedou z čista jasna objevila informace, že se Microsoft začal kamarádit s Canonicalem a že ve Windows 10 a Windows Server 2016 možná jednou přibude nejen POSIX-compliant prostředí s bashem, ale dost možná i celá vrstva umožňující běh linuxových aplikací. No a fakt, že jo.

V Redstone 1 je Windows Subsystem for Linux stále označen jako beta verze a k jejímu provozu je třeba zapnout vývojářský mód, nicméně to mi vůbec nebránilo v tom funkci hned nahodit a zhusta začít využívat. Abych se alespoň trochu držel tématu článku Jak z Windows 10 udělat desktopový systém, automatizace instalace PowerShellem se dá udělat následovně.

# 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

První dva zápisy do registru zapnou development mód a příkaz nástroje pro správu image (dism) pak systému postrčí startovací binárku pro stažení a instalaci vlastního linuxového prostředí. Pak už jen stačí restartovat, otevřít komandlajnu, spustit bash a potvrdit jeho instalaci. Výše zmíněný snippet jsem zakomponoval i do svého souhrnného instalačního a nastavovacího skriptu pro Windows 10, ale protože se rozhodně nejedná a nástroj pro každého, je ve výchozím stavu zakomentován. Možnosti a fungování bashe pak krátce shrnují poslední dva screenshoty v galerii.

Galerie


Panel nastavení - starý vzhled
Panel nastavení - nový vzhled
Start menu - starý vzhled
Start menu - nový vzhled
UAC prompt - starý vzhled
UAC prompt - nový vzhled
Bash - Základní informace o systému
Bash - Test Apache pod emulovaným linuxem

Syndrom uzamčení


Jak jsem zmínil výše, tweak na přeskočení uzamykací obrazovky na Windows 10 Pro byl v Anniversary Update učiněn neúčinným. Malou útěchou pro mě je, že na mých pracovních Windows 10 Enterprise lock screen stále zrušit jde, ale nepředpokládám, že by si usoris vulgaris domů kupoval Enterprise edici jen proto, aby při přihlášení mohl udělat o klik méně. V současné chvíli neexistuje jednoduchý a spolehlivý způsob, jak se lock screenu nadobro zbavit tak, jako to bylo možné v předchozích verzích. Stále ale existuje klíč v registrech, který zobrazení lock screenu nastavuje. Tento klíč je však během každého přihlášení nebo odemknutí resetován na svoji původní hodnotu, takže pro vyléčení tohoto neduhu je potřeba vytvořit téměř doslova „rovnák na vohejbák“. Workaroundem je naplánovaní úlohy, která po přihlášení zase hodnotu v registru vypne a přebije tím původní systémové nastavení. Přihlašovací obrazovku pak uživatel uzří pouze před prvním přihlášením po spuštění počítače, a pokud má nastavený AutoAdminLogon, tak ani tehdy ne. Drobným problémem ale je, že se vytvoření takové úlohy nedá dost dobře automatizovat nativním PowerShellem. Cmdletu New-ScheduledTaskTrigger totiž chybí možnost definovat některé aktivační události a jednou z těch chybějících je zrovna událost „odemčení pracovní stanice“, která je v tomto případě potřeba. Nabízím tedy řešení v podobě jednoduchého postupu, jak si workaround na vypnutí lock screenu vyklikat v plánovači úloh ručně. Původně jsem chtěl být ošklivej a jen vysypat strohé info a příkaz ke spuštění s tím, že kdo není dost gramotný na to, aby si přidal úlohu sám, měl by se poohlédnou po webu s nižšími nároky na uživatele. Ale nakonec jsem si řekl, že by to stejně dopadlo tak, že by mi dvacet lidí denně psalo maila, že neví, co s tím. A i já mám nervy jenom jedny, takže raději přikládám obrázkový návod.

Spusťtě plánovač úloh a klepněte na Vytvořit úlohu.

Úloha pro vypnutí lock screenu - krok 1

Úlohu si pojmenujte podle svého a nastavte uživatele na SYSTEM.

Úloha pro vypnutí lock screenu - krok 2

Přidejte aktivační události při přihlášení a při odemčení pracovní stanice.

Úloha pro vypnutí lock screenu - krok 3

Přidejte akci, ve které vyplňte

Program či skript:	reg.exe
Přidat argumenty:	add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Authentication\LogonUI\SessionData /t REG_DWORD /v AllowLockScreen /d 0 /f

Úloha pro vypnutí lock screenu - krok 4

Nakonec, fungujete-li na laptopu či jiném zařízení umožňujícím běh bez připojení k elektrické síti, odškrtněte navíc na záložce Podmínky checkbox Spustit úlohu pouze při připojení k napájení.

Úloha pro vypnutí lock screenu - krok 5

Nově vytvářenou úlohu uložte a plánovač úloh můžete zavřít. Následující uzamčení / odhlášení ještě proběhne s lock screenem, ale každé další potom už přejde přímo do seznamu uživatelů nebo dotazu na heslo.

Update 15.8.2016 - Na žádosti ctěného p. t. čtenářstva přikládám PowerShell skript pro automatizaci výše uvedeného. Nejedná se však o nativní PowerShellové cmdlety, ale o využití další úžasné vlastnosti PowerShellu - možnost importu a následné práce s .NET objekty. Ty sice práci mnohdy zastanou lépe, ale jsou poněkud náročnější na údržbu a porozumění. Následující kód například obsahuje spoustu magických konstant, které bych sice mohl rozepsat, ale kód by pak byl jestě o kus delší a zmatenější, takže pro plné porozumění směle pokračujte na Windows Dev Center stránku popisující Task Scheduler Scripting Objects.

$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

A co dál?


Model Microsoftu, který říká, že Windows 10 jsou poslední Windows a místo nových verzí se skokovými upgrady a velkými změnami budou raději postupně uplácávat jediný operační systém a vylepšovat a aktualizovat jej ad nauseam, je přinejmenším zajímavý. Šuskanda tvrdí, že Microsoftí QA se v posledních několika letech moc nepřetrhne a vývojáři jsou nuceni přidávat stále nové featury bez ohledu na to jak (a jestli vůbec) ty staré fungují. Pokud ale bude současný trend posupného otevírání kódu a vtírání se k linuxu ještě chvíli pokračovat, mohli bychom se ve Windows brzy dočkat zajímavých věcí.

Závěrem bych ještě znova rád poděkoval všem podnětně přispívajícím v diskusi u původního článku, který byl pro Anniversary Update aktualizován. Za rok své existence nasbíral sto tisíc unikátních zhlédnutí a jeho údržba mi kvůli stále přibývajícím čtenářům zabírá daleko více času, než kolik jsem do něj vůbec kdy plánoval vložit. Kdyby se ale někomu zdálo, že mu návštěva mého blogu pomohla, ušetřila čas, pobavila jej nebo vzbudila jakýkoliv jiný pocit a chtěl se nějak revanšovat, může mi přes Flattr nebo PayPal poslat nějaký měďák.