Archive for the ‘Windows 8’ Category

UEFI Boot und Probleme ins BIOS/UEFI zu kommen

3 Dezember 2016

Bei aktuellen Rechnern mit ihren superschnellen Bootvorgängen kann es schon schwierig werden ins BIOS bzw. UEFI zu kommen. Man hämmert wie blöde auf irgendwelche F-Tasten, die man manchmal schon gar nicht mehr auf der Tastatur hat, um dann später festzustellen, es war die falsche oder man war mal wieder zu langsam. Hier eine Aufstellung von möglichen Tasten: http://www.isunshare.com/windows-password/how-to-set-your-computer-to-boot-from-usb-drive.html#opt4.

Windows
Für obiges Problem gibt es seit Windows 8 Abhilfe. Man konnte seither unter den PC-Einstellungen->Update und Sicherheit->Wiederherstellung den Erweiterten Start aufrufen. Da konnte man dann meist den Eintrag UEFI-Firmware Einstellungen unter Problembehandlung->Erweiterte Optionen aufrufen oder die Starteinstellungen ändern. Diese Möglichkeit ist gut aber als bekennender Commandliner nicht sehr befriedigend.

Nun hat Microsoft bereits bei Windows 8 beim Shutdownbefehl den Parameter /o eingeführt. Dieser kürzt die Sache deutlich ab und man gelangt direkt in den Bildschirm mit den Erweiterten Startmöglichkeiten. So gehts:

shutdown /r /o

Wer sich nun unter Windows 10 v1607 die Parameter des Shutdown-Befehls anschaut, der stellt fest, es gibt nun auch einen Parameter /fw, welcher für Firmware steht und Firmware steht wiederum für die ganze UEFI-Geschichte. Man kann also mittels

shutdown /r /fw

direkt in die UEFI-Einstellungen booten! Endlich ein sauber gesteuerter Zugriff ohne zig unnötige Menüs zwischendrin!

Übrigens noch ein Tipp: Es gibt Situationen, da hat man SetHC.EXE oder UTILMAN.EXE umgebogen. Hier ein Beispiel dafür: https://newyear2006.wordpress.com/2015/08/30/abgelaufene-aktivierungen-erschweren-einem-das-leben-unter-windows/. In diesem Fall funktioniert shutdown /r /o z. B. nicht. Man kann sich jedoch behelfen, wenn man statt shutdown /o einfach

reagentc.exe /boottore

verwendet. Hat den gleichen Effekt, funktioniert aber bisher in allen Situationen! Einzige Voraussetzung dafür ist ein korrekt eingerichtetes RecoveryEnvironment. Infos dazu erhält man über reagentc /info.

Linux
Wer nun mit Linux unterwegs ist welches bereits SystemD nutzt, der kommt mit diesem Befehl in die UEFI-Einstellungen:

systemctl reboot --firmware-setup

Hier noch ein paar erhellende Infos zu UEFI unter Linux, vor allem, wie man Firmwarevariablen erzeugen kann und wie man darauf zugreift: https://firmware.intel.com/blog/accessing-uefi-variables-linux.

Ein weiterer interessanter Link für Linux und UEFI: http://superuser.com/questions/519718/linux-on-uefi-how-to-reboot-to-the-uefi-setup-screen-like-windows-8-can.

Vorsicht mit Get-NetFirewallRule bzw. WMI MSFT_NetFirewallRule-Klasse bei Abfrage der Enabled-Eigenschaft – gilt allgemein bei $True und $False in Powershell

10 Juli 2016

Ein Script welches Windows Firewall Regel-Eigenschaften abfragte funktionierte nicht wie erwartet. Es wurde immer die Enabled Eigenschaft abgefragt aber es kam nicht das erwartete Ergebnis, wurde die Abfrage aber negiert, kam das erwartete Ergebnis heraus! Am Ende stellte es sich heraus, dass die Enabled-Eigenschaften kein klassisches Bool sondern einen String zurückgibt, hier die Story:

Fragen wir zunächst die aktuelle Anzahl von Regeln ab, hier bei einem aktuellen Windows 10:

$r=Get-NetFirewallRule
$r.length
413

Es gibt also 413 Regeln. Nun sollen alle Regeln ermitteln werden, die aktiviert sind:

($r | where enabled -eq $true).length
184

Jetzt sollen alle Regeln ermittelt werden, die nicht aktiviert sind:

($r | where enabled -eq $false).length
0

Die 0 ist jetzt nicht das erwartete Ergebnis, wenn man davon ausgeht, dass es 413 Regeln gibt, davon sind 184 aktiv, dann sollten mehr als 0 inaktiv sein.

Wo liegt das Problem? Das Problem ist, dass bei $True oder $False in Powershell immer True oder False am Bildschirm ausgegeben wird. Man interpretiert einen solchen Wert schnell als Boolean. Aber in diesem Fall hat man es nicht mit einem Boolean zu tun:

$r[0].enabled.pstypenames
Microsoft.PowerShell.Cmdletization.GeneratedTypes.NetSecurity.Enabled
System.Enum
System.ValueType
System.Object

Es ist also ein Aufzählungstyp!

($r | where enabled -eq "True").length
184
($r | where enabled -eq "False").length
229

So macht die Sache mehr Sinn!

Oder man macht die Abfrage über den passenden Typ:

($r| where enabled -eq ([Microsoft.PowerShell.Cmdletization.GeneratedTypes.NetSecurity.Enabled]:
:True)).length
184
($r| where enabled -eq ([Microsoft.PowerShell.Cmdletization.GeneratedTypes.NetSecurity.Enabled]:
:False)).length
229

Übrigens: $true –eq "True" ergibt immer True, auch wenn man $true –eq "irgendwas" setzt! Und $False –eq "False" ergibt immer False, egal mit was verglichen wird, außer $false!

Unterschiede zwischen Windows Funktionen bzw. Features bei der Installation

25 Januar 2016

Microsoft hat es über die letzten Jahre mal wieder geschafft ordentlich Verwirrung zu stiften. Wenn man Windows Funktionen wie z. B. das .NET-Framework installiert, so gibt es zig verschiedene Varianten wie man dies erreichen kann.

In diesem Zusammenhang findet man:

Enable-WindowsOptionalFeature
Install-WindowsFeature
Add-WindowsFeature
dism.exe
pkgmgr.exe

Ein schöne Übersicht welche Variante auf welcher Platform, sogar bis 2016 und Nano-Server verfügbar ist, findet man hier: http://peter.hahndorf.eu/blog/WindowsFeatureViaCmd

Nicht nur, dass es unterschiedliche Aufrufe zur Installation gibt, nein je nach Variante haben die Pakete auch unterschiedliche Namen!

Um nun z. B. das .Net 3.5 Framework zu installieren, verwendet man unter Windows Server 2012:

Install-WindowsFeature –Name NET-Framework-Core

und unter Windows 10:

Enable-WindowsOptionalFeature –Featurename NetFx3

Weitere Beispiele hier: http://blog.ittoby.com/2012/11/installing-net-35-on-windows8server.html

Bilder unter Windows gezielt mit der Windows Fotoanzeige öffnen

30 August 2015

Eine Variante die unter Windows XP – Windows 10 immer verfügbar ist, solange es um übliche Dateiformate wie PNG, BMP, TIFF oder JPG handelt ist die Windows Fotoanzeige. Hier der passende Aufruf:

RunDLL32 "%ProgramFiles%\Windows Photo Viewer\PhotoViewer.dll",ImageViewer_Fullscreen C:\temp\test.bmp

Dabei muss der Bilddateiname immer als absoluter Pfad angegeben werden!

Leider kennen die Server Versionen von Windows den Photoviewer nicht.

http://www.autohotkey.com/board/topic/51203-run-rundllexe-photoviewerdll-syntax/

Komischer Eintrag im Taskmanager beim Autostartregister

1 August 2015

Der Taskmanager von Windows 8 und Windows 10 kann, wenn man die Detailanzeige aktiviert hat ein Register Autostart anzeigen. In diesem Fenster werden dann alle Programme aufgelistet, die beim Rechnerstart automatisch ausgeführt werden.

Mit der rechten Maustaste kann man zusätzliche Infos zu den Programmen erhalten, indem man die Punkte “Dateipfad öffnen” oder “Eigenschaften” anklickt. Wenn man allerdings einen Eintrag hat, der beide Punkte nicht zulässt, um was handelt es sich dann?

Mittels http://live.sysinternals.com/autoruns.exe kann man sich die Lage genauer anschauen. Dort wird man dann rausfinden, dass das entsprechende Programm einfach nicht mehr existiert, obwohl der automatische Starteintrag noch vorhanden ist. Dies führt dazu, dass die beiden genannten Menüpunkte nicht aufrufbar sind.

Man kann also den Eintrag in Autoruns löschen und wie von magischer Hand verschwindet postwendend auch der Eintrag im Tastmanager.

Man kann den Vorgang auch simulieren, indem man z. B. folgenden Eintrag per Powershell ausführt:

New-ItemProperty -Name Test -Value "C:\temp\test.exe" -Path "HK
CU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run"

Schupps taucht ein Eintrag beim Autostartregister im Taskmanager auf.

So bekommt man ihn wieder weg:

Remove-ItemProperty -Name Test -Path "HKCU:\SOFTWARE\Microsoft\
Windows\CurrentVersion\Run"

Passwörter ändern bei Remote-Desktop bzw. Terminalserversitzungen von Windows XP bis Windows 10

20 Juli 2015

Ein harmloses Thema aber dank der Genialität von Microsoft ein Thema, welches schnell ausarten kann. Zunächst einmal die Ausgangsbasis. Es geht darum den Windows Sicherheitsschirm zu bekommen, dass ist der, wenn man an einem physikalischen Rechner sitzt und STRG+ALT+ENTF drückt. Dort werden meistens diese Punkte angezeigt:

  • Computer sperren
  • Benutzer wechseln
  • Abmelden
  • Kennwort ändern
  • Task Manager starten

Jetzt das Problem: Bei einer Remotedesktopsitzung wird STRG+ALT+ENTF immer auf dem lokalen, also physikalischen Rechner ausgeführt und nicht in der Remotesitzung. Ergo kann der Benutzer sein Kennwort nicht selbständig ändern.

Zu Windows XP und Windows 7 Zeiten konnte man nun im normalen Startmenü in der rechten Spalte auf “Windows Sicherheit” klicken. Dieser Eintrag ist immer automatisch verfügbar sobald man sich in einer Remotedesktopsitzung befindet. Aber durch das verschwinden des Startmenü bei Windows 8 verschwand auch der Eintrag mit “Windows Sicherheit”. Selbst die ganzen nachfolgenden Updates zu Windows 8 mit Windows 8.1 Update Update usw. brachten keine Lösung. Auch Windows 10 mit Build 10240 kennt dazu keinen direkten Startmenüeintrag mehr.

Hier nun die möglichen Lösungen:

Variante 1)
Die einfachste Variante man drückt anstatt STRG+ALT+ENTF die Tastenkombination STRG+ALT+ENDE, also anstatt der Entfernen-Taste die Ende-Taste drücken. In den meisten Fällen sollte dies zum Erfolg führen.

Variante 2)
Alternativ kann man mit der Bildschirmtastatur arbeiten. Dazu ruft man OSK.EXE auf und _wichtig_ drückt auf seiner physikalischen Tastatur STRG+ALT und klickt dann auf dem OSK-Keyboard mit der Maus auf die ENTF-Taste.

Variante 3)
Man verwendet ein kleines Skript, üblicherweise Powershell:

Powershell  -command  "(New-Object -ComObject Shell.Application).WindowsSecurity()"

Damit wird auch der Windows Sicherheitsbildschirm angezeigt. Allerdings funktioniert dieses Skript nur, wenn man sich in einer Remotedesktopsitzung befindet. Im normalen Betrieb aufgerufen passiert einfach nichts.

https://msdn.microsoft.com/en-us/library/windows/desktop/gg537748(v=vs.85).aspx?cs-save-lang=1&cs-lang=vb#code-snippet-1

Variante 4)
Seit Windows 8 hat sich ja alles auf die modernen Apps verlagert was bei Tablets auch Sinn macht, denn wer hat schon STRG+ALT-Tasten an seinem Tablet? Deshalb gibt es bei Windows 8 und nachfolgend unter PC-Einstellungen->Konten->Anmeldeoptionen die Möglichkeit sein Kennwort zu ändern. Unter Windows 10 geht man dazu auf Einstellungen->Konten->Anmeldeoptionen.

Eine weitere Variante für Commandliner ab Windows 10 ist der Aufruf von:

start ms-settings:signinoptions

Man kann auch im hypermodernen Edgebrowser in der URL-Zeile direkt ms-settings:signinoptions eingeben und landet dann in der Einstellungsseite. Nur Cortana versteht das noch nicht, irgendwie komisch…

 

So das war der kleine Ausflug in der Geschichte der Passwortänderungen für die Benutzer. Hier noch hilfreiche Links zum Thema:

http://superuser.com/questions/492856/how-can-i-send-a-ctrlaltdelete-through-remote-desktop-in-windows-8

https://social.technet.microsoft.com/forums/windowsserver/en-US/2b67fa96-707b-47c4-90f5-c3a087ba16a9/how-do-i-change-password-when-connected-to-remote-desktop

Hier noch Links zum Thema ms-settings: http://winaero.com/blog/how-to-open-various-settings-pages-directly-in-windows-10/ sowie https://msdn.microsoft.com/en-us/library/windows/apps/xaml/dn741261.aspx und wo es herkommt: https://msdn.microsoft.com/en-us/library/windows/apps/jj662937(v=vs.105).aspx

Änderungen an Windows Firewall protokollieren mit Vergleich vorher/nachher

18 Juli 2015

Wenn man manchmal Programme installiert, dann ändern diese Einstellungen an der Firewall. Wenn man nun protokollieren möchte, was geändert wurde, so kann man sich – wie immer – Powershell bedienen.

Seit Windows 8 gibt es die Network Security Cmdlets, dort findet sich Get-NetFirewallRule. Hiermit kann man folgendes machen:

$fwVorher = Get-NetFirewallRule

Damit erzeugt man quasi einen Snapshot $fwVorher mit den alten Einstellungen der Firewall. Hier ein paar kurze Infos zum Status:

PS C:\Windows\system32> $fwVorher.Count
384
PS C:\Windows\system32> ($fwVorher|where enabled -eq True).Count
138

Es gibt also insgesamt 384 Firewallregeln, davon sind schon 138 aktiviert.

Jetzt geht man her und nimmt Änderungen am System vor. Hier aktiviere ich in einem neu eingerichteten Windows 8.1 Pro den RemoteDesktop und frage danach nochmal obige Informationen ab. Ich speichere es aber wieder in einer Variablen.

PS C:\Windows\system32> $fwNachher=Get-NetFirewallRule
PS C:\Windows\system32> ($fwNachher|where enabled -eq True).Count
141

Es sind also drei Regeln aktiviert worden. Stellt sich die Frage, welche das waren? Hier kommt nun wieder die Mächtigkeit von Powershell zum Tragen, denn wir kennen den Zustand davor und danach, somit können wir Powershell beauftragen die Unterschiede zu finden:

PS C:\Windows\system32> diff $fwVorher $fwNachher

InputObject                                                 SideIndicator
———–                                                 ————-
MSFT_NetFirewallRule (CreationClassName = "MSFT?FW?Firew… =>
MSFT_NetFirewallRule (CreationClassName = "MSFT?FW?Firew… =>
MSFT_NetFirewallRule (CreationClassName = "MSFT?FW?Firew… =>

Ja toll, super das wussten wir davor schon, dass es drei Regeln sind. Die Informationsaussage ist gleich 0. Nächster Versuch, das Compare-Object Cmdlet welches dem diff-Alias zugrunde liegt kennt einen Parameter Property mit dem kann man die Eigenschaft bestimmen, welche verglichen werden soll. Vielleicht klappt es ja damit:

PS C:\Windows\system32> diff $fwVorher $fwNachher -Property Enabled

                                                    Enabled SideIndicator
                                                    ——- ————-
                                                       True =>
                                                       True =>
                                                       True =>

Nicht viel besser wie die erste Variante.

OK, die Lösung des Problems ist ein weiterer Paramater: Passthru

Hier die Variante, wo alles schön ausführlich ausgibt:

diff $fwVorher $fwNachher -Property Enabled -PassThru

Eine etwas besser lesbare Variante wäre die hier:

PS C:\Windows\system32> (diff $fwVorher $fwNachher -Property Enabled -PassThru)| select dis*, des*, ena* | Fl *

DisplayName  : Remotedesktop – Schatten (TCP eingehend)
DisplayGroup : Remotedesktop
Description  : Eingehende Regel für den Remotedesktopdienst, um das Spiegeln einer vorhandenen Remotedesktopsitzung
               zuzulassen. (TCP eingehend)
Enabled      : True

DisplayName  : Remotedesktop – Benutzermodus (UDP eingehend)
DisplayGroup : Remotedesktop
Description  : Eingehende Regel für den Remotedesktopdienst, die RDP-Datenverkehr zulässt [UDP 3389]
Enabled      : True

DisplayName  : Remotedesktop – Benutzermodus (TCP eingehend)
DisplayGroup : Remotedesktop
Description  : Eingehende Regel für den Remotedesktopdienst, die RDP-Datenverkehr zulässt. [TCP 3389]
Enabled      : True

Damit hat man nun ein schönes Protokoll, welche Firewallregel aktiviert bzw. deaktiviert wurde.

Übrigens Windows 10 Build 10158 bringt in der Pro Fassung 626 Firewallregeln mit! Da geht was…

Windows 8.1 Images auf neuesten Stand bringen

2 Mai 2015

Hier die offizielle Beschreibung, wie man Images von Windows 8.1 auf den aktuellen Stand bringen kann: https://technet.microsoft.com/en-us/library/dn622020.aspx?f=255&MSPPError=-2147217396.

Dies ist vor allem wichtig, wenn man seinen Rechner auffrischen oder sein Windows über die windowseigene Funktion neu aufsetzen lassen möchte. Führt man obige Anweisungen nicht durch, landet man schnell bei Windows 8.

Aber Vorsicht bei kleineren Geräte mit <= 32GByte Festplatte, da sollte man die Sache nicht anwenden. Der Artikel über WIMBoot geht darauf ein: https://technet.microsoft.com/en-us/library/dn594399.aspx. Microsoft hat damals auch das Disklayout umgestellt, wie die Partitionen künftig aufgeteilt werden sollen.

Ganz einfach WLAN-Sicherheitsschlüssel unter Windows auslesen

23 Februar 2015

Ich hab hier früher schon einmal eine Methode beschrieben, wie man WLAN-Netzwerkkennwörter per Commandline auslesen kann: https://newyear2006.wordpress.com/2013/01/02/wifi-netzwerksicherheitsschlssel-unter-windows-per-powershell-auslesen/. Die Variante funktioniert, ist aber entsprechend aufwändig. Was wenn nun von Haus aus eine viel einfachere Methode existiert?

Na dann nutzen wir diese halt:

netsh wlan show profiles

listet zunächst die verfügbaren WLAN-Profile auf. Den Schlüssel dafür bekommt man mittels:

netsh wlan show profiles "Mein WLAN-Netzwerkname" key=clear

Dabei löscht clear nichts, sondern sagt lediglich, dass der Netzwerkschlüssel im Klarnamen angezeigt werden soll.

So sieht der Aufruf konkret z. B. bei einer Fritzbox aus:

netsh wlan show profiles "Fritz!Box 7490" key=clear

Die Sache funktioniert bereits bei Windows 7! Für Windows 8 gibt es sogar eine offizielle Doku: http://windows.microsoft.com/de-at/windows-8/manage-wireless-network-profiles.

Viel Spaß beim Stöbern…

Erweitertes Bootmenü bei Start von Windowsrechnern anzeigen

28 Dezember 2014

Bei neueren Rechnern und optimalen Bios bzw. UEFI-Einstellungen ist es manchmal recht schwer bzw. unmöglich beim Starten des Rechners das erweiterte Bootmenü mittels F8 zu aktivieren.

Wenn der Rechner bereits hochgefahren ist, kann man sich aber behelfen, indem man einen speziellen Parameter mittels BCDEDIT.EXE setzt. Dadurch wird das erweiterte Bootmenü immer angezeigt, bis es wieder explizit abgeschaltet wird:

bcdedit /set {bootmgr} displaybootmenu yes

Zum Ausschalten verwendet man dann später wieder:

bcdedit /set {bootmgr} displaybootmenu no

Nun kann man zwischen den Bootvorgängen in aller Ruhe das passende Auswählen. Hier noch eine bebilderte Anleitung: http://support2.microsoft.com/kb/2809468/en.

Die Variante klappt übrigens auch bei Windows 7. Besonders wertvoll ist es auch bei Verwendung von virtuellen Maschinen, wo man oft noch nicht den passenden Tastaturfokus hat.

Hier die aktuellste Beschreibung von BCDEDIT /set und die möglichen Parameter: http://msdn.microsoft.com/en-us/library/windows/hardware/ff542202(v=vs.85).aspx.

Eine kurze Erklärung zu {bootmgr} erhält man über:

bcdedit /? ID

Hier noch der Link zur offiziellen BCDEDIT-Befehlszeilenreferenz: http://technet.microsoft.com/en-us/library/cc731662.aspx. Leider wie so oft ziemlich unbrauchbar.

Unter Windows 8 und Server 2012 bzw. dessen Nachfolger kann man mittels

bcdedit /set {current} onetimeadvancedoptions on 

das Menü auch nur einmalig für den nächsten Bootvorgang aktivieren.