Präsentationen nacheinander starten

Ich musste soeben eine Präsentation für heute Abend vorbereiten, eigentlich nichts aussgewöhnliches, nur ein kleines Problem: Am Anfang soll eine kleine Psäentation ablaufen und darauf sollen einige Bilder in einer Endlosschlaufe geziegt werden. Und das ganze, ohne die Präsentation abzubrechen, oder in ein anderes Programm zu wechseln. Man kann Powerpoint zwar so einstellen, dass die Präsentation am Schluss wieder von vorne beginnt, aber dann beginnt sie nicht bei den Bilder.

Die Lösung des Problems war der Powerpoint Viewer, welcher gratis heruntergeladen werden kann.
Ich habe dazu zwei Präsentationen erstellt, zuerst eine mit der Präsentation, die am Anfang laufen soll und eine zweite mit den Bildern als Endlosschlaufe.
Darauf habe ich im Notepad eine Datei erstellt und dort in der ersten Zeile den kompletten Pfad zur ersten Präsentation und in der zweiten Zeile den Pfad zur zweiten Präsentation angegeben. Das sieht dann zum Bsp. so aus:
C:\Users\user\Documents\praesentation_1.pptx
C:\Users\user\Documents\praesentation_2.pptx


Nun kann man den Powerpoint Viewer über die Konsole mit dem Parameter /L aufrufen und dort die Textdatei mit den Pfaden angeben:
"C:\Program Files\Microsoft Office\Office12\pptview.exe" /L liste.txt


Sobald die erste Präsentation fertig ist, wird automatisch die zweite mit den Bildern geladen und abgespielt. Mit Esc kann die letzte Präsentation beendet werden.

Prozess in der CMD beenden

Mit den Bordmitteln von Windows XP und Vista ist es sehr einfach einen Prozess über die CMD oder aus einer Batch datei zu beenden. Dazu kann man den Befehl taskkill benutzen. Mit taskkill /? erhält man eine Übersicht der Parameter und pratischerweise muss man dazu nicht mal die ID des Prozesses wissen. Ein kleines Beispiel:
taskkill /F /IM notepad.exe

Outlook: Fehler beim Anhängen eines Attachments

Letzhin hatten wir im Geschäft wieder ein komisches Problem im Outlook. Bei einer Mitarbeiterin wurde beim Anhängen einer Datei ans Mail im Outlook die folgende Fehlermeldung angezeigt.
Die Datei "..." kann nicht erstellt werden. Klicken Sie mit der rechten Maustaste auf den Ordner, in dem Sie die Datei erstellen möchten, und klicken Sie dann auf "Eigenschaften", um Ihre Berechtigungen für den Ordner zu überprüfen.


Lustigerweise kam diese Fehlermeldung nur bei einer Datei, bei anderen Funktionierte es ohne Probleme. Wenn die Datei umbenannt wurde klappt es auch wieder. Das Problem scheint die Berechtigung im temporären Zielordner zu sein, aber wer weiss schon welcher das ist.

Die Lösung zum Problem ist in der Windows Registry zu finden. Dort muss man unter HKEY_CURRENT_USER\Software\Microsoft\Office\11.0\Outlook\Security den Schlüssel OutlookSecureTempFolder löschen und schon funktioniert es wieder. Wichtig ist, dass man die Registry als normaler Benutzer startet.

Fehler bei Windowsupdate (0x80004002)

Als ich heute einen Computer mit Windows XP neu installierte bin ich mal wieder auf ein Problem gestossen. Nachdem ich einige Updates installiert hatte und den Computer neustarten musste, wollte ich noch die Restlichen Updates installieren. Windows war da aber anderer Meinung und brach die Installation der Updates mit der folgenden (nicht sehr aussagekräftigen) Fehlermeldung ab.
http://images.t-error.ch/blog/778/fehler.jpg


Nach einigem Suche habe ich in der Datei c:\windows\WindowsUpdate.log einen Fehlercode gefunden:
Agent	*********
Agent	**  END  **  Agent: Installing updates [CallerId = MicrosoftUpdate]
Agent	*************
COMAPI	>>--  RESUMED  -- COMAPI: Install [ClientId = MicrosoftUpdate]
Agent	WARNING: WU client failed installing updates with error 0x80004002
COMAPI	  - Install call failed
COMAPI	  - Reboot required = No
COMAPI	  - WARNING: Exit code = 0x80240FFF; Call error code = 0x80004002
COMAPI	---------
COMAPI	--  END  --  COMAPI: Install [ClientId = MicrosoftUpdate]
COMAPI	-------------
COMAPI	WARNING: Operation failed due to earlier error, hr=80004002

Mit dem Fehlercode 0x80004002 konnte ich dann auch im Internet suchen und bin so recht schnell auf die Seite WSUS.DE gestossen und dort habe ich auch die Lösung für das Problem gefunden.

Als erstes muss man den Windows Update Agent herunterladen und dann mit WindowsUpdateAgent30-x86.exe /wuforce installieren. Danach funktionierte Windows Update wieder ohne Probleme.

Dateien mit robocopy sichern

Heute wollte ich mit xcopy ein Backup der Daten von einem Computer auf eine externe Festplatte machen. Noch einiger Zeit ist xcopy allerdings mit der Fehlermeldung Nicht genügend Arbeitsspeicher.
xcopy c:\ e:\backup\ /c /f /y /e /h
.....
Nicht genügend Arbeitsspeicher
3519 Datei(en) kopiert


Da alle neuversuche nichts gebracht haben, habe ich eine Alternative gesucht und in robocopy auch gefunden. robocopy ist im Windows Server 2003 dabei und kann gratis heruntergeladen werden.
Nach der Installation musste ich zuerst die Datei robocopy.exe von C:\Programme\Windows Resource Kits\Tools/ nach C:\WINDOWS\system32 kopieren.

Nun konnte ich mit Robocopy die Dateien auf die Festplatte kopieren.
robocopy c:\ e:\backup\ /E /Z /R:2 /W:1 /TEE /LOG:e:\log.txt


Noch kurz zu den Parameteren:
  • Mit /E werden alle Verzeichnisse (auch leere) kopiert.
  • /Z wird der Kopiervorgang im "restartable mode" gestartet. Das heisst, bei einem Abbruch muss man nicht von vorne beginnen.
  • /R:2 die Anzahl der "Retries", wenn eine Datei nicht kopiert werden kann.
  • /W:1 Die Zeit in Sekunden, sie zwischen den Retries gewartet werden soll.
  • /TEE Gibt die Ausgabe auch in die Konsole zurück.
  • /LOG Gibt das Logfile an

Windows Uptime ermitteln

Wer wissen möchte, wie lange ein Windows Computer/Server schon läuft, bzw. wann er gestartet wurde hat zwei möglichkeiten.

Zum einen gibt es den Befehl net statistics server den man in der cmd eingeben kann. Die Ausgabe kann dan folgendermassen aussehen:
Serverstatistik für \\HOSTNAME


Statistik seit 27.06.2008 22:06


Akzeptierte Sitzungen            21
Zeitüberschrittene Sitzungen     276
Sitzungsabbruch wegen Fehler     2045

Kilobytes gesendet               255056937
Kilobytes empfangen              98783500

Mittlere Antwortzeit (ms)        0

Systemfehler                     0
Berechtigungsverstöße            5410
Kennwortverstöße                 81

Dateizugriffe                    3119902
DFÜ-Hardwarezugriffe             0
Gespeicherte Druckaufträge       0

Anzahl Pufferüberläufe

  Große Puffer                   0
  Anfragepuffer                  0

Der Befehl wurde erfolgreich ausgeführt.

Hier sieht man ganz oben, dass der Server am 27.06.2008 um 22:06 gestartet wurde. Nebenbei gibt noch einige andere interessante Daten.


Die andere Möglichkeit ist das Tool uptime.exe welches man bei Microsoft gratis herunterladen kann. In der cmd ausgeführt zeigt es an, wie lange der Server schon läuft. Das kann da so aussehen:
\\SERV01 has been up for: 41 day(s), 12 hour(s), 2 minute(s), 46 second(s)


Beide Möglichkeiten erfüllen ihren Zweck, die erste Variante hat allerdings den Vorteil, dass man nichts herunterladen muss.

Linux mit Samba als Windows Domänenmitglied

Im Geschäft hatten wir eine USB-Festplatte, auf welcher wir sehr viele Bilder für die Katalogproduktion hatten. Das funktionierte recht gut, nur war es recht umständlich, da man die Festplatte immer wieder von einem Computer an den anderen anschliessen mussten. Die ideale Lösung ist also, wenn man die Bilder auf einem Server platziert, damit alle Leute darauf zugriff haben. Eine Bedingung ist, dass alle Leute die Bilder ansehen, aber nur bestimmte Mitarbeiter darauf zugreifen können.
Ich habe das ganze mit einem Linux-Server mit Samba gelöst, welcher an die Windows-Domain angeschlossen wurde. Hier nun eine kleine Anleitung, wie das bei mit funktioniert hat.

Ausgangslage

Domain: MUSTER.LOCAL
DNS-Server: 192.168.1.10

Domaincontroller
OS: Windows 2003 SP 2
Hostname: SERV01
IP: 192.168.1.10

Linux Server
OS: Ubuntu Linux 8.04 Server (2.6.24-16-server)
Hostname: SERV02
IP: 192.168.1.11

Software

Installiert werden muss Samba, Winbind und Heimdal. Bei mir in den folgenden Version (direkt über apt)
  • Samba 3.0.28a
  • Winbind 3.0.28a-1ubuntu4
  • heimdal-clients 0.7.1-1ubuntu3

Installation

Kerberos


Kerberos wird zur Authentifizierung am Windows-Server verwendet. Will sich also ein Benutzer am SERV02 anmelden, so sendet dieser die Anfrage an den SERV01 (PDC) weiter und erhält von dem die Nachricht, ob Benutzername und Passwort korrekt sind. So kann man direkt die Benutzer und Gruppen aus der Active-Directory verwenden, was die Benutzerverwaltung sehr vereinfacht. Kerberos ist im Packet Heimdal enthalten.
Konfigurieren muss man die Datei /etc/krb5.conf. Dazu muss man zuerst eine Realm (einen Bereich) konfigurieren und dort ein KDC (Kerberos Distribution Center) angeben und dann der Domain den Berich zuweisen. Wichtig ist hier, dass auf die Gross- und Kleinschreibung geachtet wird. Meine Konfigurationsdatei sieht so aus:
[libdefaults]
        default_realm = MUSTER.LOCAL
        clockskew = 300

[realms]
        MUSTER.LOCAL = {
                kdc = SERV01.MUSTER.LOCAL
        }

[domain_realm]
        .muster.local = MUSTER.LOCAL

[logging]
#       default = SYSLOG:NOTICE:DAEMON
        default = FILE:/var/log/krb/krb5libs.log
        kdc = FILE:/var/log/krb/kdc.log
        kadmind = FILE:/var/log/krb/kadmind.log

[appdefaults]
        pam = {
                ticket_lifetime = 1d
                renew_lifetime = 1d
                forwardable = true
                proxiable = false
                retain_after_close = false
                minimum_uid = 0
                debug = false
        }

Nun kann man mit dem Befehl kinit den Kerberos Client (Linux) am Server (Windows) authenifizieren. Dies funktioniert mit dem folgenden Befehl:
kinit Administrator@MUSTER.LOCAL

Wichtig ist wieder, dass auf die Gross- und Kleinschreibung geachtet wird und dass die Namensauflösung funktioniert. Ein ping auf serv01 sollte hier im Beispiel 192.168.1.10 zurückgeben.

Samba


Jetzt kann Samba über die Datei /etc/samba/smb.conf konfiguriert werden. Wichtig sind die Rot markierten Zeilen.
[global]
   workgroup = MUSTER
   server string =
   netbios name = serv02
   realm = MUSTER.LOCAL
   idmap uid = 10000 - 15000
   idmap gid = 10000 - 15000
   winbind separator = /
   winbind use default domain = yes
   password server = serv01.muster.local
   security = ADS
   client use spnego = yes
   dns proxy = no
   log file = /var/log/samba/log.%m
   max log size = 1000
   syslog = 0
   panic action = /usr/share/samba/panic-action %d
   encrypt passwords = yes
   passdb backend = tdbsam
   obey pam restrictions = yes
   invalid users = root
   passwd program = /usr/bin/passwd %u
   passwd chat = *Enter\snew\sUNIX\spassword:* %n\n *Retype\snew\sUNIX\spassword:* %n\n *password\supdated\ssuccessfully* .
   socket options = TCP_NODELAY

  • workgroup: Die Arbeitsgruppe. Sollte gleich dem Domänennamen sein
  • netbios name: Der Netbios Hostname des Servers
  • realm: Der Bereich. Gleich dem Bereich in der Kerberos Konfiguration
  • idmap uid: Bereich der genutzt wird um die Domänenbenutzer auf die Linux Benutzer zu mappen
  • idmap gid: Bereich der genutzt wird um die Domänengruppen auf die Linux Gruppen zu mappen
  • winbind seperator: Das Trennzeichen zwischen der Domäne und dem Benutzer
  • winbind use default domain: Definiert, ob Winbind auch mit dem Benutzernamen arbeitet, wenn keine Domäne angegeben wurde.
  • password server: Der Server, welcher die Passwörter validiert.
  • security: Definiert, dass Samba als ADS Mitglied arbeiten soll
  • client use spnego: Aktiviert SMB Singing

Nun muss man den Samba Server noch in die Domäne aufnehmen. Das macht man seit Samba 3.* nicht mehr mit smbpasswd sondern mit dem net Befehl:
net join -S serv01 -UAdministrator%password


Wenn alles geklappt hat muss man Linux noch mitteilen, dass Benutzeranfragen an winbind weitergeleitet werden sollen. Dies macht man in der Datei /etc/nsswitch.conf. Dort muss man die Zeilen passwd und group anpassen. Sie sollten schlussendlich so aussehen:
passwd:         files winbind
group:          files winbind


Nach einem Neustart von Samba und Winbind kann man prüfen, ob die Konfigurationsarbeit erfolgreich war. Die folgenden Befehle sollten alle Benutzer, bzw Gruppen der Windows Domäne anzeigen.
wbinfo -u
wbinfo -g

Shares einrichten

Sollte bisher alles funktioniert haben, kann man jetzt die Shares im Samba einrichten. Ich habe einen Share names Bilder gemacht, auf welchen alle Zugriff haben, aber nur eine bestimmte Gruppe schreiben kann.
[bilder]
   comment = Bilder
   path = /home/bilder
   public = yes
   read only = no
   guest ok = no
   browseable = yes
   valid users = @muster/alle
   admin users = @muster/abteilung, muster/user


Hier noch die Unterschiede zwischen Lokalen-/Domänenbenutzen-/Gruppen.
# lokaler user
valid users = user

# domain user
valid users = muster/user

# lokale gruppe
valid users = @group

# domain gruppe
valid users = @muster/group

Quellen


Im Internet gibt es schon einige Anleitungen dazu. Hier möchte ich diejenigen Auflisten, die mich am meisten weitergebracht haben:
  • http://www.pro-linux.de/work/server/samba3-domaene.html
  • http://www.administrator.de/Samba_in_Windows_Dom%C3%A4ne.html

Adminpack unter Windows Vista

Über das Adminpack für Windows XP habe ich ja bereits geschrieben. Eine wirklich praktische Sache, da man nicht immer über Remote-Desktop auf den Server verbinden muss, wenn man etwas in der Active-Directory anpassen will.
Da ich mich im Geschäft nun mit Vista herum schlage, wollte ich auch hier das Adminpack installieren. Also erstmal die neuste Version herunterladen und installieren. Das alles funktionierte ohne Probleme. Nur beim hinzufügen der Snap-Ins fehlten einige wichtige, wie zum Beispiel die Benutzerverwaltung.
Also schnell im Internet suchen und siehe da. Es gibt kein Adminpack für Vista und den Server 2003. Toll, danke! Aber es gibt einen Hack. Einfach die Befehle in eine neue Datei kopieren, diese als mmc.cmd abspeichern und dann als Administrator ausführen. Beim erneuten öffnen der MMC kann man nun alle Snap-Ins auswählen.
http://images.t-error.ch/blog/716/mmc.jpg


Hier die Codes für die mmc.cmd
regsvr32 /s adprop.dll
regsvr32 /s azroles.dll
regsvr32 /s azroleui.dll
regsvr32 /s ccfg95.dll
regsvr32 /s certadm.dll
regsvr32 /s certmmc.dll
regsvr32 /s certpdef.dll
regsvr32 /s certtmpl.dll
regsvr32 /s certxds.dll
regsvr32 /s cladmwiz.dll
regsvr32 /s clcfgsrv.dll
regsvr32 /s clnetrex.dll
regsvr32 /s cluadmex.dll
regsvr32 /s cluadmmc.dll
regsvr32 /s cmproxy.dll
regsvr32 /s cmroute.dll
regsvr32 /s cmutoa.dll
regsvr32 /s cnet16.dll
regsvr32 /s debugex.dll
regsvr32 /s dfscore.dll
regsvr32 /s dfsgui.dll
regsvr32 /s dhcpsnap.dll
regsvr32 /s dnsmgr.dll
regsvr32 /s domadmin.dll
regsvr32 /s dsadmin.dll
regsvr32 /s dsuiwiz.dll
regsvr32 /s imadmui.dll
regsvr32 /s lrwizdll.dll
regsvr32 /s mprsnap.dll
regsvr32 /s msclus.dll
regsvr32 /s mstsmhst.dll
regsvr32 /s mstsmmc.dll
regsvr32 /s nntpadm.dll
regsvr32 /s nntpapi.dll
regsvr32 /s nntpsnap.dll
regsvr32 /s ntdsbsrv.dll
regsvr32 /s ntfrsapi.dll
regsvr32 /s rasuser.dll
regsvr32 /s rigpsnap.dll
regsvr32 /s rsadmin.dll
regsvr32 /s rscommon.dll
regsvr32 /s rsconn.dll
regsvr32 /s rsengps.dll
regsvr32 /s rsjob.dll
regsvr32 /s rsservps.dll
regsvr32 /s rsshell.dll
regsvr32 /s rssubps.dll
regsvr32 /s rtrfiltr.dll
regsvr32 /s schmmgmt.dll
regsvr32 /s tapisnap.dll
regsvr32 /s tsuserex.dll
regsvr32 /s uddi.mmc.dll
regsvr32 /s vsstskex.dll
regsvr32 /s w95inf16.dll
regsvr32 /s w95inf32.dll
regsvr32 /s winsevnt.dll
regsvr32 /s winsmon.dll
regsvr32 /s winsrpc.dll
regsvr32 /s winssnap.dll
regsvr32 /s ws03res.dll

Selbstversuch

Ob das gut geht?
http://images.t-error.ch/blog/690/vista.jpg

Standardvorlage im Word 2007 anpassen

Ich hatte letzthin im Word 2007 ein komisches Problem. Und zwar war der Cursor in einem neuen Dokument immer in der Mitte. Sicher, man kann den Cursor ja recht einfach wieder an den linken Rand bringen, aber es ist nervig und sollte nicht so sein. Es scheint ein Fehler in der Standardvorlage zu sein, keine Ahnung aber wir das passieren konnte.
Die Lösung dafür ist recht simpel, den Cursor nach links verschieben und die Standardvorlage dann überschreiben. Die Standardvorlage (normal.dotm) liegt im Word 2007 im folgenden Ordner:
C:\Dokumente und Einstellungen\user\Anwendungsdaten\Microsoft\Templates

Nun ändert man das leere Dokument so ab, wie man es haben will und speichert es in den Ordner ab. Die Datei normal.dotm kann man nicht überschreiben, da sie momentan benutzt wird, also nennt man die Datei normal_neu.dotm.
Jetzt schliesst man das Word, öffnet im Explorer den Ordner, löscht die Datei normal.dotm (oder benennt sie um) und ändert den Namen der normal_neu.dotm auf normal.dotm. Beim nächsten Start vom Word 2007 hat man nun die neue Vorlage offen. Bei mir mit dem Cursor auf der linken Seite, wie es sich gehört.