Kategorie: Programmierung

Groß- und Kleinschreibung von MySQL-Tabellennamen

Eine „schöne“ Stolperfalle, wenn Projekte aus einer Windows- in eine Unix-Umgebung geschoben werden, sind die Tabellennamen in MySQL. Egal, ob die Tabelle unter dem Namen „Kosten“, „kosten“ oder „Kosten“ angelegt wurde, unter Windows ignoriert ein Statement wie

SELECT * FROM kOsTeN;

jegliche Groß- und Kleinschreibung und liefert die selektierten Zeilen, während MySQL unter Unix in einen Fehler läuft.

 

Pfadangaben in der php.ini, Strichpunkt und Doppelpunkt

Manchmal sucht man Fehler, die eigentlich gar keine sind – deshalb ist der entscheidende Hinweis aus der PHP-Dokumentation auch nochmal hier dupliziert:

Das Format ist ähnlich zur PATH-Umgebungsvariablen des jeweiligen Systems: Eine Liste von Verzeichnissen, getrennt durch einen Doppelpunkt unter Unix oder ein Semikolon unter Windows.

Nein, einfach kopieren zwischen verschiedenen Betriebssystemen geht nicht!

 

Remoteprozess auf einem Windows-Rechner mittels PERL starten

Remoteprozess auf einem Windows-Rechner mittels PERL starten

Um mittels PERL einen Remoteprozess auf einem entfernten Windows-Rechner zu starten, gibt es mehrere Alternativen:

Eine Möglichkeit ist die Verwendung von „PsExec.exe“ aus der PsTools-Suite von Microsoft, die allerdings den Nachteil hat, daß über einen „system“-Call ein externes Programm aufgerufen wird und die Einfluss- und Kontrollmöglichkeiten sehr beschränkt sind.

Soll der Start in PERL durchgeführt werden, so ist zwischen zwei Anwendungsszenarien zu unterscheiden:

Sofern lediglich unter dem Kontext des aufrufenden Benutzers ein Prozess gestartet werden soll, reichen 2 Zeilen PERL-Code (aus Gründen der Übersichtlichkeit wurde auf Fehlerbehandlung verzichtet):

use strict;
use warnings;
use Win32::OLE;

my $remoteHost = 'myHost';
my $remoteCmd = 'c:\windows\notepad.exe';

my $wmi = Win32::OLE->GetObject("winmgmts:{ImpersonationLevel=Impersonate,(security)}//$remoteHost\\root\\cimv2:Win32_Process");
$wmi->Create($remoteCmd);

Weitaus flexibler ist hingegen die Möglichkeit, den Prozess unter einem anderen Benutzer zu starten und ggf.

Weiterlesen

 

Textformatierung aus der Zwischenablage entfernen

Die Funktionalität von stripClip, einem kleinen Utility zum Entfernen von Textformatierungen  aus der Zwischenablage lässt sich – sofern sowieso ein Perl-Interpreter installiert ist – auch mit wenigen Zeilen Perl-Code realisieren:

use warnings;
use strict;
use Win32::Clipboard;

my($text);

my $clip = Win32::Clipboard();

do {

	$clip->WaitForChange();

	if ($clip->IsText()) {
		$text = $clip->GetText();
		$clip->Set($text);
	}

} while ($text ne ':q');

Startet man das Skript mit ‚wperl.exe‘ statt mit ‚perl.exe‘, stört kein Fentser und das Skript lässt sich ohne Taskmanager durch Kopieren von ‚:q‘ beenden.

Weiterlesen

 

Windows, Geplante Tasks, Perl und ARGV

Ein logischer Grund ist nicht ersichtlich, aber während der „Geplante Task“ beim Aufruf

c:\perl\bin\wperl.exe c:\meinskript.pl tollerparameter

den tollen Parameter ans Skript weiterreicht, wird mittels

c:\meinskript.pl tollerparameter

zwar das Skript aufgerufen, der Parameter kommt aber nicht an.