Office 2010/2013/2016 – Word/Excel – persönliche Vorlagen anzeigen

img_008In Word 2013 wurde die Anzeige für die Erstellung von neuen Dokumenten erneuert, sodass man jetzt bei „Neu“ standardmäßig direkt Empfohlene Vorlagen von Microsoft findet.
Im Unternehmen möchte man aber vermutlich hier seine eigenen Vorlagen per Default anzeigen, das geht per Registry Einstellung oder Gruppenrichtlinie relativ einfach.
Als erstes prüft, ob der „Standardspeicherort für persönliche Vorlagen“ auch korrekt gesetzt ist. (Datei -> Optionen -> Erweitert)
Diesen Wert kann man natürlich auch per Gruppenrichtlinie setzten. Dort gibt es auch eine Einstellung  (Userteil)“Workgroup templates path“ unter „Microsoft Office 201x -> Shared paths“ womit man einen zusätzlichen Speicherort angeben kann, ohne den Pfad der direkten Uservorlagen ändern zu müssen.

Registrierungspfad der Gruppenrichtlinie:
HKEY_CURRENT_USER\software\policies\microsoft\office\15.0\%WORD,Excel, usw..%\options\general!officestartdefaulttab

In der Praxis also ungefähr so:

Word:
HKEY_CURRENT_USER\Software\Microsoft\office\15.0\word\options
DWORD: officestartdefaulttab
Value: 1
Excel:
HKEY_CURRENT_USER\Software\Microsoft\office\15.0\excel\options
DWORD: officestartdefaulttab
Value: 1

Im Gegenzug findet man die gleichwertige Gruppenrichtlinie unter:
User Configuration -> Policies -> Administrative Templates -> Microsoft Word 2013 (oder anderes Produkt) -> Miscellaneous -> Show custom templates tab by default in Word on the Office
img_012img_011
Dass man dafür die Office 2013 ADMX Templates installiert haben muss ist denke ich klar, sonst sieht man den Punkt nicht 😉 (via)
Update (11.05.2017): Das gleiche funktioniert auch bei Office 2016. Hier braucht ihr dann die passenden Office 2016 ADMX Templates – die Namen und Beschreibungen sind aber alle identisch geblieben.
Alle Werte finden sich in der Registry unter der Ebene: HKEY_CURRENT_USER\SOFTWARE\Policies\Microsoft\office\16.0

Scripting: Das sichere Speichern von Passwörtern

Um seine privaten Passwörter zu speichern gibt es ja mittlerweile viele Tools wie z.B. PasswortDepot, Keepass, oder Lastpass die ein verschlüsseltes speichern ermöglichen.
Im Firmenumfeld gibt es aber unter Umständen einige Gründe in denen man Passwörter in Powershell oder Batch Scripten ablegen muss.
Jetzt gibt es verschiedene Wege ein Passwort zu speichern und zu nutzen:
1. Im Klartext
Leider ist es immer noch viel zu oft gängige Praxis, das Passwort aufgrund von Faulheit einfach im Klartext in einer Textdatei abzuspeichern.
2. Verschlüsselt via MD5/SHA-1
Die Verschlüsselung des Passwortes sollte auf jeden Fall im Umgang mit Kundendaten oder zum Beispiel für Logindaten erfolgen.
Wenn man ein automatischen Cronjob erzeugt der Remote Daten abgreift, bringt dies allerdings nichts, da ja immer noch das Kennwort (zum Entschlüsseln) irgendwo gespeichert bzw. eingegeben werden muss.
Weitere Infos zum Hashen von Passwörter findet ihr hier sehr schön beschrieben.
3. Verwendung des PSCredential (unter Windows)
Mit der Powershell wurde das PSCredential-Objekt eingeführt – ein Objekt in dem Username + Passwort verschlüsselt abgelegt werden.
Diese Funktion basiert auf der Windows Data Protection Api (DPAPI) wie auch alle anderen Windows-Anwendungen wie z.B. Internet Explorer usw.
Das erzeugen eines PSCredentials funktioniert zum Beispiel so:

$pw = Get-Credential

Wie man sieht besteht das Objekt aus Benutzernamen und dem Passwort welches als „System.Security.SecureString“ gespeichert wird:

PS C:\Users\Constey> $pw
UserName                                                               Password
--------                                                               --------
asd                                                System.Security.SecureString

Um das Passwort jetzt abspeichern zu können muss es in einen String konvertiert werden. Dieser String ist bereits verschlüsselt und sieht ungefähr so aus:

PS C:\Users\Constey> $pw.Password | ConvertFrom-SecureString
01000000d08c9ddf0115d1118c7a00c04fc297eb01000000cbd08902a5e36247a761f726c190898
f00000000020000000000106600000001000020000000db8dea5f0d8c77a856c7a156f2a0ebfc19
ce82a95bfc0877192fe3771178ae2f000000000e8000000002000020000000d172638c2edc9eeca
2b764e052fc94b2671d3b62fdcfb2edd98fac306a22d65670000000bbd1fb42c2f91ffc4f9abac5
4c1fc5cdf0396fee5db1f9bc1d21070c2cc07f1911c0f8af85c9eef1019bc50fd382bb120fb8826
7a51115677520452d6eb5347a615218419e3d5803170a3c71e58b5789f1de597082d5d9eb68af66
598590a1607b7975d3c70d6ae09c70ce781cb0f8e8400000001a1c3903abcc486186818c9695b88
b6c54acfb973a7e6670bd08f78653a275791b42b88d823db04348262908b37fdb03bd6d719a05f5
ea35917e69ab96a44a32

Zum Speichern in einer Datei kann man die Ausgabe per Pipe umleiten:

PS C:\Users\Constey> $pw.Password | ConvertFrom-SecureString | out-file c:\temp\test.txt

Wie liest man ein gespeichertes Passwort aus einer Datei wieder ein ?

$username = "test"
$pw = cat c:\temp\test.txt | ConvertTo-SecureString
$credential = new-object -typename System.Management.Automation.PSCredential -argumentlist $username, $pw

Hier sollte beachtet werden, dass man den Usernamen explizit nochmal von Hand angeben muss, das Kennwort aber aus der Datei importiert wird.
Die $credential Variable ist nun wieder unser PSCredential-Objekt und kann normal weiter verwendet werden.

Get-WmiObject -Query "Select * FROM Win32_OperatingSystem" -Credential $credential

Wenn man nur das Passwort als SecureString über die Konsole einlesen möchte geht dies alternativ auch so:

$pwOnly = read-host -assecurestring

[stextbox id=“info“]Seit Powershell 3.0 gibt es auch die Möglichkeit vollständige Objekte als XML-Datei zu exportieren. Dies kann unter Umständen einfacher sein, da dass Passwort automatisch konvertiert wird und das Objekt auch den Usernamen enthält.[/stextbox]

$pw = Get-Credential
$pw | Export-Clixml C:\temp\test.xml

Der Import funktioniert ebenso simple:

$pwNeu = Import-Clixml C:\temp\test.xml
PS C:\Users\Constey> $pwNeu
UserName                                                               Password
--------                                                               --------
asdasd                                             System.Security.SecureString

Die XML Datei ist wie folgt aufgebaut:

<Objs Version="1.1.0.1" xmlns="http://schemas.microsoft.com/powershell/2004/04">
  <Obj RefId="0">
    <TN RefId="0">
      <T>System.Management.Automation.PSCredential</T>
      <T>System.Object</T>
    </TN>
    <ToString>System.Management.Automation.PSCredential</ToString>
    <Props>
      <S N="UserName">asdasd</S>
      <SS N="Password">01000000d08c9ddf0115d1118c7a00c04fc297eb01000000cbd08902a5e36247a761f726c190898f00000000020000000000106600000001000020000000aa344345ba7c169386795f88c4631bde7834256b4d5f65023cf3a8520683b789000000000e8000000002000020000000b219a67d828f8fe0391687af3ca7ccfc96dfd21546b5ad45915745aed130bcd280000000bf438824b21f066088a69a8bf6c0b2286f50c2ff68b1c881b55d98d6b300d3407be4eb2de0521c21b03bdeec2cf60729ff97ead3217f592ab01954641d0c445c9a0ca77e73d83d949425613dcb51c97c917610a61239cb2aa4017141b2139a0ae7d80d738de22c0545019d38af1811dc8d89476d273f578b776cf0e7addc847c40000000bda7b710327a37477bc6db816a7ca7a3553f44fd71aff73bfa6bbaf1b16b9cc4a400fbc8c536dc08d23ed126547c3b5a049105ef8bb8ca487933755c8565aa8b</SS>
    </Props>
  </Obj>
</Objs>

[stextbox id=“info“]Wichtig: Das PSCredential bzw. der SecureString den man erzeugt wird auf Basis von der PC-Hardware aber auch von Werten des aktuellen Benutzers erzeugt. Das heißt, dass dieser String nicht unter einem anderem User funktioniert.
Das hat zudem den Vorteil, dass man ohne Zugangsdaten des Users nichts mit dem gespeichertem Passwort anfangen kann.
Eine Nutzung zum Beispiel über den Task Scheduler wäre dennoch möglich, denn man kann dort sein Script unter einem anderem Benutzer ausführen lassen. Dafür müssen bei der Erstellung des Tasks die Zugangsdaten des Benutzers einmalig angegeben werden. Diese werden dann wiederum verschlüsselt von Windows’s Credential Manager gespeichert.[/stextbox]
Abschließend gilt zu sagen, dass Sicherheit natürlich auch viel mit Bequemlichkeit zu tun hat – dennoch sollte man im Firmenumfeld seine Kennwörter nicht im Klartext in irgendwelchen Dateien abspeichern, jedenfalls sofern es nicht anders möglich ist.
Falls man dennoch mal mit unsicheren Programmen wie Net-Use, FTP etc. arbeiten muss, die keine -Credential Objekte unterstützen gibt es noch das Tool „Get-PSCredential“ von Thomas Franke, welche auch den Umgang mit solchen Programmen zumindest so Sicher wie möglich macht.

Zotac Zbox ID91 – Windows 8.1 – Audio /HDMI – Treiber

main_ZBOXID91-14_compressed
Ich teste momentan die Zbox ID91 und habe das System mit Windows 8.1 installiert. Ich habe erst einmal alle Treiber vom Hersteller installiert, jedoch bekam ich mit dem System kein Ton.
Verbaut ist ja ein Intel Core i3 inkl. HD4400 Graphics – und der Ton wird via HDMI herausgeschleust.
Kurzerhand auf der Intel Webseite nach dem aktuellsten Treiber geschaut – und gefunden. Dort ist der aktuellste Treiber zu finden, welcher auch Windows 8.1 unterstützt.
Download hier. (Intel® Iris™ and HD graphics Driver for Windows 8.1*)
Einfach installieren und neustarten – fertig.

Windows Startzeit/Boottime herausfinden

willkommen
Wer kennt diesen Bildschirm nicht ? Manchmal kommt es einem vor als ob Jahre vergehen, während Windows am hochfahren ist.
Doch wie lange dauert das hochfahren eigentlich genau – und was im Detail dauert da denn so lange ?
Zum Glück kann man sich mit Windows Boardmitteln die genaue Dauer des Startvorgangs & Herunterfahren anzeigen lassen. Wie das geht erkläre ich euch hier.

Weiterlesen

WSUS Fehler 0x80072f8f / Windows 8

Wer beim Windows-Update über einen WSUS-Server die Fehlermeldung „0x80072f8f“ bekommt kann folgendes prüfen um den Updatevorgang wieder zum Laufen zu bekommen:
– WindowsUpdate.log lesen (C:\Windows\WindowsUpdate.log)
Taucht dort etwa folgendes auf:

2013-04-17 11:14:07:789 964 ed8 Misc WARNING: WinHttp: SendRequestUsingProxy failed for &lt;https://wsus.domain.de:8531/selfupdate/wuident.cab&gt;. error 0x80072f8f
2013-04-17 11:14:07:789 964 ed8 Misc WARNING: WinHttp: SendRequestToServerForFileInformation MakeRequest failed. error 0x80072f8f
2013-04-17 11:14:07:789 964 ed8 Misc WARNING: WinHttp: SendRequestToServerForFileInformation failed with 0x80072f8f
2013-04-17 11:14:07:789 964 ed8 Misc WARNING: WinHttp: ShouldFileBeDownloaded failed with 0x80072f8f
2013-04-17 11:14:07:801 964 ed8 Misc WARNING: Send failed with hr = 80072f8f.
2013-04-17 11:14:07:801 964 ed8 Misc WARNING: Proxy List used: &lt;(null)&gt; Bypass List used : &lt;(null)&gt; Auth Schemes used :
2013-04-17 11:14:07:801 964 ed8 Misc WARNING: Send request failed, hr:0x80072f8f

Offensichtlich kann die wuident.cab nicht heruntergeladen werden. Prüfen wir das nochmal mit dem Internet Explorer und rufen die Adresse im Browser auf:

https://wsus.domain.de:8531/selfupdate/wuident.cab

Jetzt müsste ein Dateidownload starten oder wie im Fehlerfall vermutlich ein SSL-Fehler erscheinen.
Anschließend prüfen, ob das Zertifikat noch gültig ist und ob der Zertifizierungstelle vertraut wird.
Sollte das Zertifikat abgelaufen sein, kann man es wie folgt aktualisieren:
1. MMC starten &  Zertifikats-Snapin hinzufügen (Computer-Zertifikate)
2. Unter Personal -> Certificates -> Rechtsklick Neues Zertifikat anfordern (Computer-Zertifikat)
wsus-new-certificatewsus-certificate-enroll
3. Nun muss das Zertifikat noch für die WSUS-Webseite veröffentlicht werden. Dazu den IIS-Manager starten
4. Unter der WSUS-Site bzw. Default-Website findet ihr via Rechts-Klick „Edit Bindings“ wo unter HTTPS das Zertifikat ausgewählt werden muss.
wsus-bindings-https wsus-bindings-https2
Fertig.

Howto: Windows 7 All-in-One Setup erstellen (32bit+64bit)

Einen Boot-Stick mit vielen Tools haben ja einige – aber auch einen mit einer Windows 7 Installation für 32 und 64bit Systeme in allen Editionen (Ultimate,Professional, Home Premium etc..) ?
Nein? Dann habe ich hier die passende Anleitung für euch. „Mein Windows 7 – 96bit Variante ;-)“ P.S. Für Windows 8 ist es exakt die gleiche Prozedur.
Als erstes benötigt ihr das Windows Automated Installation Kit für Windows 7 -> Download hier
Dann benötigt ihr jeweils die Setupdateien von Windows 7 (optimalerweise Ultimate/Enterprise) in 32bit sowie 64bit ausführung.
Bei mir sieht die Ordnerstruktur dann so aus:
Windows 7 Ultimate – 32 Bit -> D:\Temp\32bit\
Windows 7 Ultimate – 64 Bit -> D:\Temp\64bit\
So jetzt noch den Pfad zu den Waik-Tools in die Path Umgebungsvariablen mit aufnehmen, damit wir gleich weniger tippen müssen:

;C:\Program Files\Windows Imaging\;C:\Program Files\Windows AIK\Tools\x86\

path-variable
Ok – kann los gehen. Wir erstellen uns jetzt unsere eigene „install.wim“ indem wir jeweils die 32bit und 64bit install.wim zusammenführen.
Hat man ein Windows 7 Ultimate kann man verschiedene Editionen exportieren, oder man nimmt einfach nur die Ultimate Edition um ein paar MB zu sparen.
Ich will ein Bootstick mit allen Varianten haben, also exportiere ich alles. Macht eh nur ca. 200MB unterschied.
Um sich die verschiedenen Editionen anzuzeigen gibt man folgendes ein:

imagex /info D:\temp\32bit\sources\install.wim

Man bekommt eine XML-Rückgabe in der man die verschiedenen Editionen sieht:
imagex
Anhand des Image-Index sieht man auch die Edition.
Fangen wir also an mit dem exportieren:
Tool: „imagex /export“
Quelle: „D:\Temp\32bit\sources\install.wim“
Image-Index: „5“
Zieldatei: „install.wim“
Beschreibung: „Windows 7 Ultimate x86“

imagex /export D:\Temp\32bit\sources\install.wim 5 install.wim "Windows 7 Ultimate x86"
imagex /export D:\Temp\32bit\sources\install.wim 4 install.wim "Windows 7 Professional x86"
imagex /export D:\Temp\32bit\sources\install.wim 3 install.wim "Windows 7 Home Premium x86"
imagex /export D:\Temp\32bit\sources\install.wim 2 install.wim "Windows 7 Home Basic x86"
imagex /export D:\Temp\32bit\sources\install.wim 1 install.wim "Windows 7 Starter x86"
imagex /export D:\Temp\64bit\sources\install.wim 4 install.wim "Windows 7 Ultimate x64"
imagex /export D:\Temp\64bit\sources\install.wim 3 install.wim "Windows 7 Professional x64"
imagex /export D:\Temp\64bit\sources\install.wim 2 install.wim "Windows 7 Home Premium x64"
imagex /export D:\Temp\64bit\sources\install.wim 1 install.wim "Windows 7 Home Basic x64"

Haben wir jetzt alle 9 Editionen zusammengeführt haben wir eine ca. 5GB große install.wim Datei.
Eure frisch erstelle install.wim nehmt ihr jetzt und überschreibt damit die install.wim aus dem sources Verzeichnis der 32-Bit Installation.
Wenn ihr meinen Bootstick verwendet könnt ihr die Dateien anschließend einfach auf euren Stick kopieren.
Man kann Windows 7 32-bit und 64-bit kombinieren, aber leider nicht Windows 7 und z.B. Windows Server 2008 R2 oder Windows 8.
Man kann zwar alle in eine install.wim packen, benötigt dann aber auch die restlichen Dateien des Setups. Also quasi vorher immer den sources & Boot Ordner (außer install.wim) von Windows 7 oder 2008 R2 PE mit denen auf dem Stick überschreiben. Je nachdem was man halt installieren möchte.
(Wenn jemand drauf kommt, welche Dateien man aus dem sources oder Boot Ordner kombinieren muss – sagt bescheid.)
setup
Fertig

Windows 8 Lizenzschlüssel nachträglich ändern

Hat man bei der Installation bereits einen Produkt-Key eingegeben, kann man ihn (soweit ich weiß) nicht via eine GUI ändern.
Also die Eingabeaufforderung als Administrator starten:
slmgrstarten
Dann gibt man den Code via den slmgr.vbs ein:

slmgr.vbs /ipk 1234-5678-9012-3456-7890.....
slmgr.vbs /ato

keyaendern slmgr
Voilà – Habt ihr einen passenden Schlüssel sollte euer Windows nun aktiviert sein 😉

Windows 8 – Windows herunterfahren & eigene Metro Icons

Wie ihr mit Sicherheit schon bemerkt habt ist das Startmenü bei Windows 8 verschwunden, doch wie fährt man den PC jetzt am schnellsten herunter?
Wie man das Startmenü wieder bekommt, bzw. eine alternative beschreibe ich jetzt nicht – einfach googlen, darüber gibt es schon 1000 Blogposts.
Ich liste euch mal ein paar Methoden zum Herunterfahren auf – ihr könnt dann ja selber entscheiden 🙂



 
Eigenes Metro Icon:
Eigenes Metro Icon
Eigenes Metro Icon

Dazu legt euch eine neue Text Datei an und kopiert folgenden Inhalt hinein:

shutdown.exe /s /t 0

Hierbei steht das /s für Shutdown und /t 0 ist die Zeitangabe – 0 = sofort. Ihr könntet auch noch /f für Force hinzufügen. (Zwangsabmeldung)
Für Neustarten wäre es:

shutdown.exe /r /t 0

Nun davon eine Verknüpfung anlegen und bei euch im Profilordner ablegen:

%AppData%\Roaming\Microsoft\Windows\Start Menu\Programs\Accessories

Wenn ihr wollt könnt ihr dem ganzen noch ein nettes Symbol geben:
symbolAendern
Wenn ihr anschließend im Metro-UI sucht findet ihr nun euer hinzugefügtes „Herunterfahren“ Programm 😉
herutnerfahren herutnerfahrenSuche
Rechtsklick und Pin – und ihr habt’s auf der Startseite.

Windows 8 – Profilbild via CMD setzen

Ich beschrieb ja schon, wie man Benutzerbilder ins AD bekommt. Nun gibt’s wieder etwas neues. Wie wird das AD-Bild in Windows 8 angezeigt ?
Normalerweise kann man das Profilbild so setzen:

Windows/PC-Einstellungen -&gt; Anpassen -&gt; Profilbild

Macht man es so, wird das Profilbild in 5 verschiedenen Größen in folgendem Ordner gespeichert. (Achtung: Versteckte Dateien)

C:\Users\Public\AccountPictures\S-1-5-21-141383358-124726640-2919435464-1237 (eigene USER-SID)

Ich habe noch keinen Weg gefunden die Dateien von Hand zu löschen, oder auszutauschen.
Profilbild von Hand setzen:
Einfach das Bild von Hand in den 5 verschiedenen Größen in den Ordner:

C:\Users\Public\AccountPictures\----EIGENE SID----

kopieren. Eure SID bekommt ihr via Powershell heraus:

[System.Security.Principal.WindowsIdentity]::GetCurrent().User.Value

Bildernamen und Größen:

Image40.jpg --&gt;  40x40px
Image96.jpg --&gt; 96x96px
Image200.jpg --&gt; 200x200px
Image240.jpg --&gt; 240x240px
Image448.jpg --&gt; 448x448px

Folgendes Powershell-Skript erstellt euch den passenden Ordner (mit SID): 

# Get Current User SID
$sid = [System.Security.Principal.WindowsIdentity]::GetCurrent().User.Value
# Create Folder
if (Test-Path ($env:PUBLIC\AccountPictures\$sid)) -eq $FALSE) {
$(mkdir $env:PUBLIC\AccountPictures\$sid).Attributes = 'Hidden'
}

Das Profilbild wird aber erst neu geladen, wenn man z.B. den PC sperrt, oder neu anmeldet. Wie man direkt das Metro Menü neu laden kann, habe ich  noch nicht herausgefunden.
Weitere nützliche Ordner:

Default Account Picture:
C:\ProgramData\Microsoft\User Account Pictures
Lockscreen
C:\Windows\Web\Screen
C:\ProgramData\Microsoft\Windows\SystemData\S-1-5-18\ReadOnly\LockScreen_Z
C:\Windows\WinSxS\long_random_file_name
C:\Users\Username\AppData\Roaming\Microsoft\Windows\LockScreen_Z
C:\Users\Public\AccountPictures

Jetzt fehlt erst einmal nur noch der Mechanismus, der das Foto aus dem Active-Directory ausliest und als .jpg abspeichert. Das kommt dann später. Eventuell gibt es auch noch einen anderen, besseren weg. (Wie z.B. über die neue API von Microsoft. Der Code für Windows 7 findet ihr hier.)

Latitude E6510 und Windows 8 – die Treiber

Wer auf seinem DELL Latitude E6510 versucht Windows 8 zu installieren, wird erstmal keine Probleme haben. Installation geht natürlich. Allerdings werden von Haus aus nicht direkt alle Treiber installiert.
Bei mir hat z.B. der Treiber fürs integrierte UMTS-Modem (Dell Wireless 5540 HSPA Mini-Card Device) gefehlt. Ebenso fürs Touchpad und noch ein paar Geräte.
Dell bietet offiziell noch keine Treiber an – und die Windows 7 Treiber kann man in manchen Fällen nicht installieren wegen einer eingebauten OS-Überprüfung. (Dieses Betriebssystem wird nicht unterstützt…)
Der einfachste Weg alle Treiber wieder zu installieren ist, wenn man noch eine Windows 7 Installation hat, wo die Treiber installiert sind. Dann muss man lediglich im Gerätemanager die Geräte einzeln auswählen und den Pfad zum alten Windows-Verzeichnis angeben und die Treiber werden von dort installiert.
Da ich zum Testen erstmal Windows 8 im Dual-Boot installiert habe also kein Problem.  Ich habe noch kein komplettes Treiberpaket gefunden.
Lediglich fürs UMTS-Modem gibt es die extrahierten Treiber zum Download. (Danke @ baskura)
Dieser funktioniert auch ohne das „Dell Broadband Manager Utility“ – man kann sich direkt via Windows verbinden. (Siehe Screenshots).