Mittwoch, Juli 31, 2013

Wundermütze mit wordpad, write und Windows7

Beim Start von Wordpad aus Powershell heraus kam es zu unerwarteten Problemen beim Aufruf.
Lösung:
(cmd /c write)

Problembeschreibung:
//windows Start/Suche: wordpad und
//windows Start/Suche: write

liefern beide:
C:\Program Files\Windows NT\Accessories\wordpad.exe

von der command shell aus kann aber nur write starten
Die Powershell startet mit write, write-object

Erst nach Hinzufügen des Pfades kennt Powershell auch Wordpad:

$env:path+=';C:\Program Files\Windows NT\Accessories'
wordpad

Offen ist, warum cmd write kennt und wordpad startet.

Dazu fragen wir mal:
((cmd /c echo %path%).split(';')|%{(gci -path $_ *.* 2>$null)})|?{$_.name -match '(\bwrite\..+)|(\bwordpad\..+)'}|select directory, name,length|ft -auto

Also gibt es unter c:\windows und c:\windows\system32 jeweils eine write.exe mit 10240 bytes. Das nach dem Start geöffnete Programm nennt sich wordpad. Auch get-process findet nur wordpad und nicht write.

Im oben genannten  Zubehör Pfad findet man dann auch wordpad.exe:
gci -path 'C:\Program Files\Windows NT\Accessories' *.*

Es ist größer als 4MB.

Die letzte offene Frage ist somit, wie wird aus write wordpad, und woher wusste die Suche, dass bei der Suche nach Wordpad die Datei Write zu finden ist, welche letztlich wordpad aufruft??. Vermutlich ist write.exe nur eine Weiterleitung auf wordpad.exe.

Am Einfachsten ist somit die oben genannte Lösung. (cmd /c write)

Dienstag, Juli 30, 2013

Scrollbars und Code bei blogger

Darstellung von Code in Div containern und Verwendung von Scrollbars.

<div style="border: 1px solid brown; background-color:#eee;height: 144px; overflow: scroll; width: 435px;padding:3px;">
<div style="width:990px;">
<pre><code>Code...BlaBla........
</code>
</pre>
</div>
</div>

Die die Darstellung von Code auf der Blogger Seite zeigt obiger Code.
Das erste Div bestimmt,  wie groß die Code Box wird und wie sie aussieht.
Das zweite Div bestimmt, ab welcher Breite ein Text zum Umbruch führt. Auch kann man an dieser Stelle erst mit diesem zweiten Div das Overflow Attribut dazu animieren, einen horizontalen Schiebebalken zu aktivieren.
Das Pre Tag sorgt dafür, dass die Code Zeilenumbrüche und Leerzeichen wie vorgegeben dargestellt werden.
Das Code Tag markiert Anfang und Ende des Code und formatiert standardmäßig in einer monospaced Schriftart.
Den Code lässt man am Besten von einem Wysiwyg Editor wie Expression Web in HTML umwandeln, damit etwaige Steuerzeichen oder Tags als Text und Entities eingesetzt werden.

Play Sound mit Powershell

Die folgenden Powershell Zeilen veranlassen Windows, eines der möglichen Logon Sounds abzuspielen.
Zuerst Powershell im Single Thread Apartment Modus starten: powershell -sta
Dann copy & paste
. . Getestet auf Windows7

#--------kopiere von hier-----------------
Cls;#Erstmal machen wir reinen Tisch
@"
https://www.ibjs.net 130730 - Zufällige Wiedergabe von Mediendateien in Powershell, FileSystem, Mediaplayer
Anregungen vom Guru http://powershell.com/cs/blogs/tobias/archive/2011/01/07/organizing-videos-and-music.aspx
sicherheitshalber die Powershell im STA Mode starten: powershell -sta
sonst sind Thread Fehler zu erwarten:
The calling thread cannot access this object because a different thread owns it
Der aufrufende Thread kann nicht auf dieses Objekt zugreifen,
da sich das Objekt im Besitz eines anderen Threads befindet.
"@
 If ($host.Runspace.ApartmentState -eq 'STA')
{
#Windows verwaltet FileSystemInfo Objekte, die man z.B. mit gci ermittelt
 $Suchwort="Logon"# Logon,Balloon, Default, Ding, Error, Notify, etc
 $files=(gci -path $env:windir/media -recurse "*$Suchwort*" -include *.wav,*.mp3)
 $file=$files|get-random -count 1
#Mit dem shell-object hat man Zugriff auf die zusätzlichen Dateieigenschaften für ein FileSystemObjekt
 $shell=New-Object -COMObject Shell.Application
#Man benötigt die shellfolder, welche Träger der Eigenschaften sind
 $shellfolder=$shell.namespace($file.DirectoryName)
#Die Eigenschaften beziehen sich auf die items des shellfolders, den shellfile
 $shellfile=$shellfolder.parsename($file.Name)
#msdn nennt 289 Eigenschaften: http://msdn.microsoft.com/en-us/library/windows/desktop/bb787870(v=vs.85).aspx
#die man mit getdetailsof anzeigen kann
 0..288|?{ $shellfolder.GetDetailsOf($shellfile, $_) }| %{'{0,-4}{1,-24}{2}' -f $_,$shellfolder.GetDetailsOf($null, $_),  $shellfolder.GetDetailsOf($shellfile, $_)}
#für den Medienplayer ist vielleicht die 27, die Liedlänge interessant
 $Länge=([timespan]$shellfolder.GetDetailsOf($shellfile,27)).totalseconds
 if ($Länge -gt 5) {$Länge=5} #kleine Bremse
#nun kann man den Medienplayer zum Abspielen bemühen
 Add-Type -AssemblyName presentationCore
 $mediaPlayer = New-Object system.windows.media.mediaplayer
 $mediaPlayer.open([uri]"$($file.fullname)")
 $mediaPlayer.Play()
#Warte bis Lied aus
 Start-Sleep -Seconds ([int]($Länge))
 $mediaPlayer.Stop()
#Ende der Vorstellung
} 
Else  {
"Starte die Powershell im Single Thread Appartment Modus mit: powershell -sta"
}
#Ende -------- kopiere bis hier !!!

Mittwoch, Juli 24, 2013

ASCII Zeichen in Powershell

32..127|%{"{0,10}{1,10}{1,10:x}" -f [char]$_,$_}

Ich liebe Powershell!!!

Vielleicht finde ich nicht immer den kürzesten Weg, aber ein Weg findet sich meistens.

Montag, Juli 15, 2013

Mein WederNoch

Vor einem Jahr habe ich mir ein Smartphone Sony Xperia P gekauft. Eigentlich ist es ein ganz tolles Gerät, wenn man von den vielen Unzulänglichkeiten absieht.
Zur Verzweiflung bringt mich, dass regelmäßig eingehende Anrufe zwar zu hören und zu sehen sind, die Annahme des Anrufes durch die vorgeschriebene Wischbewegung aber unmöglich ist. Ein unmittelbar folgender Rückruf durch mich ist dann problemlos möglich.
Zur großen Verwunderung macht sich das Gerät selbständig, indem es ohne willentliche Aufforderung Anrufe tätigt. Wahrscheinlich nimmt es bei geöffneter Telefonapplikation die erstbeste Gelegenheit zur Anwahl eines zufällig auf dem Display stehenden Kontaktes wahr.
Das erste Update des Betriebssystem im Sommer letzten Jahres führte zu einer Änderung des WiFi Verhaltens. Ein Wechsel des Routers war nur nach Reset des Gerätes möglich. Erst nach weitern vier Monaten gab es dann eine in diesem Punkt korrigierte Version.
Meine Frau wird niemals ein solches Gerät haben wollen. Sobald sie das Gerät in der Hand hat, löst sie unbewusst Aktionen am Gerät aus. Es verschwindet die Fotoanzeige, es wird etwas gewählt, also absolut unfreundlich für leicht technik-distanzierte Anwender.
Als Fotoapparat gibt es sehr gute Bilder, aber nur bei guter Beleuchtung. In lichtschwachen Situationen ist ein richtiger Fotoapparat sicher besser.
Als Navigationsgerät im Auto hat es bei einer längeren Autobahnfahrt die ersten 400 km gut mitgehalten, hat dann im entscheidenden Moment nach Abfahrt von der Autobahn und Einfahrt in unbekanntes Stadtgebiet wegen Überhitzung aufgegeben.

Fazit, das Gerät ist ganz nett, aber weder ein richtiges Telefon, noch ein Fotoapparat oder Navigationsgerät. Es ist eben ein WederNoch.

Powershell - Driverquery

Im Netz findet sich ein schönes Beispiel für die Verwendung eines command-shell Befehls zur Treiberanzeige mit Powershell:
http://powershell.com/cs/blogs/tips/archive/2011/12/20/finding-driver-information.aspx

driverquery.exe /v /FO CSV | ConvertFrom-CSV #| Select-Object 'Display Name', 'Start Mode', 'Paged Pool(bytes)', Path

Dummerweise wurden bei der deutschen Übersetzung beide Felder "State" und "Status" mit "Status" übersetzt, was ConvertFrom-CSV als Fehler interpretiert

Hier des Rätsels Lösung, Korrektur des Headers:
 
driverquery -v -fo csv|convertfrom-csv -header ((driverquery -v -fo csv)[0].replace('"','').replace('Status,Status','State,Status').split(','))|select Anzeigename,Startmodus,'Ausgelagerter Pool (Bytes)',Pfad|sort startmodus,anzeigename #|out-gridview

Kommentar:
1. ausführliche Ausgabe von driverquery im csv Format
2. Übernahme der CSV Daten in ein Powershellobjekt
3. dazu den Header aus der ersten Zeile der CSV Daten korrigieren
4. entferne zuerst die Gänsefüßchen
5. ersetze dann 'Status,Status' durch 'State,Status'
6. zeige dann die Felder aus dem Beispiel durch Angabe ihrer deutschen Feldnamen an
7. zusätzlich ist ein Sortieren nicht schlecht
8. Wer will, kann auch noch das GridView bemühen

Übrigens scheint es keine gute Idee zu sein, alles übersetzen zu wollen.

Sonntag, Juli 07, 2013

Auch das gibt's: XP Backup restore auf Windows7

Sinn und Zweck von Backups werden sogar von Microsoft in Frage gestellt. Ursprünglich war es nicht vorgesehen, mit XP erstellte backups zum restore unter Windows7 bereitzustellen. Nach einigem Murren der Anwender wurde zumindest für einen Teil der Anwender eine Lösung veröffentlicht. Unter dem Namen Windows6.1-KB974674-x64.msu findet sich bei Windows Update eine NTBackup-RestoreUtility genannte Software, die wenigstens den Anwendern der Ultimate oder Enterprise Version von Windows7 einen Blick in die Vergangenheit ermöglicht. Nur diesen Nutzern ermöglicht Microsoft die zur Installation erforderliche Umstellung auf die englische Sprachversion. Alle andern blitzen bei der Installation mit einer schnöden Fehlermeldung ab. Aber vielleicht gibt es noch irgendwo einen Patch für den Patch?

Freitag, Juli 05, 2013

Easytransfer von XP zu Windows 7

Easytransfer
Für die Mitnahme der Einstellungen des alten PC auf den Neuen bietet diese Freeware Unterstützung an.

Donnerstag, Juli 04, 2013

run as system

das geht mit psexec aus den sysinternals
psexec -i -s powershell.exe
zum Start von psexec braucht man aber die "normalen" Admin Rechte
Hauptanwendung von psexec ist aber die remote-Ausführung von Programmen auch die interaktive Ausführung einer remoteshell.

Outlook Suche in allen Postfächern

Outlook2013:
Erst wenn ein Postfachelement, wie der Posteingang eine beliebigen Postfachs, aktiviert wird, gibt Outlook die Aktion \\Outlook\Start\Suchen\E-Mail_filtern frei. Bei anderen aktiven Elementen bleibt die Aktion ausgegraut.

Tools - msconfig

Windows 7 bietet folgende Konfigurationsmöglichkeiten an:
\\start\ausführen\msconfig

Allgemein - Systemstart, Diagnosestart, Benutzerdef. Start
Start: Startoptionen, GUI, Protokollierung, Startinformationen
Dienste: Services
Systemstart: HKCU, HKLM Run, \\S1\...Startup,
Tools:
Info;Windows Versionmsinformation;C:\Windows\system32\winver.exe
UAC Einstellungen; Ändert Benutzerkontensteuerung;C:\Windows\System32\UserAccountControlSettings.exe
Wartungscenter;;C:\Windows\System32\UserAccountControlSettings.exe
Windows-Problembehandlung;;C:\Windows\System32\control.exe /name Microsoft.Troubleshooting
Computereinstellungen;Systemeinstellungen und -Komponenten;C:\Windows\System32\compmgmt.msc
Systeminformationen;Hard- und Softwareeinstellungen;C:\Windows\System32\msinfo32.exe
Ereignisanzeige;;C:\Windows\System32\eventvwr.exe
Programme;;C:\Windows\System32\appwiz.cpl
Systemeigenschaften;Basisinformationen wie Leistungsindex;C:\Windows\System32\control.exe system
Interneteigenschaften;;C:\Windows\System32\inetcpl.cpl
Internetprotokollkonfiguration;;C:\Windows\System32\cmd.exe /k %windir%\system32\ipconfig.exe
Leistungsüberwachung;;C:\Windows\System32\perfmon.exe
Ressourcenmonitor;;C:\Windows\System32\resmon.exe
Task-Manager;;C:\Windows\System32\taskmgr.exe
Eingabeaufforderung;;C:\Windows\System32\cmd.exe
Registrierungseditor;;C:\Windows\System32\regedt32.exe
Remoteunterstützung;Freund über Internet anfragen;C:\Windows\System32\msra.exe
Systemwiederherstellung;Früheren Zustand wiederherstellen;C:\Windows\System32\rstrui.exe