Oje noch ein Blog Übers Leben, das Universum und den ganzen anderen Rest…

12Sep/110

VBS Einzeiler zum ermitteln von 64 oder 32 Bit Windows Betriebssystem

Der Fuktionsaufruf gibt 64 oder 32 zurück.

GetObject("winmgmts:root\cimv2:Win32_Processor='cpu0'").AddressWidth
13Apr/110

String mit .NET komprimieren und und mit Ruby wieder entpacken

Das hab ich gebastelt um einen XML String aus .NET über POST Request an eine Ruby on Rails Applikation zu übertragen und dort weiterzuverarbeiten. Um beim senden keine Probleme zu verursachen wird der GZIP komprimierte String BASE64 kodiert.

.NET Code (VB.NET 2010)

Imports System.Security.Cryptography
Imports System.IO.Compression

Public Function Compress(ByVal text As String) As String
	Try
		Dim buffer() As Byte = Encoding.UTF8.GetBytes(text)
		Dim memoryStream = New MemoryStream()
		Using gZipStream = New GZipStream(memoryStream, CompressionMode.Compress, True)
			gZipStream.Write(buffer, 0, buffer.Length)
		End Using
		Return Convert.ToBase64String(memoryStream.GetBuffer)

	Catch ex As Exception
		WriteToDebugLog("Compress", ex.Message)
		Return Nothing
	End Try

End Function

RoR Code (Ruby 1.9.2 / Rails 3)

require "base64"
require 'nokogiri'
xml = ActiveSupport::Gzip.decompress(Base64.decode64( ))
xml_doc = Nokogiri::XML(xml) do |config|
	config.noblanks
end
# Zugriff auf Elemente über
xml_doc.xpath()

Evtl. hilfts ja jemandem bei was auch immer.

28Sep/090

Standortabhängiges Anmeldescript

Den aktuellen Standort eines Benutzers zu ermitteln, definiert durch die Active Directory Sites, funktioniert folgender VBS Code:

On Error Resume Next
Set wshShell = WScript.CreateObject( "WScript.Shell" )
strUserDomain = wshShell.ExpandEnvironmentStrings( "%USERDOMAIN%" )

strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

Set colItems = objWMIService.ExecQuery("SELECT ClientSiteName FROM Win32_NTDomain WHERE DomainName = '"& strUserDomain &"'",,48)

For Each objItem in colItems
  ' Hier wird der erkannte Sitename der Anmeldedomäne ausgegeben.
  strSiteName = objItem.ClientSiteName
next

select case strSiteName
	case "Berlin"
             ' Tu irgendwas
	case "München"
             ' Tu irgendwas anderes
end select

Getestet unter Windows XP, Windows 2003, Vista und Windows 7.

21Sep/091

Der nervende Edelstein

Ich freunde mich gerade mit Ruby on Rails an, da war es naheliegend sich eine schöne IDE dafür zu suchen die bereits Testserver und alles enthält so das man sich nicht mit der Installation des selbigen herumschlagen muss.

Meine Wahl fiel dabei auf Aptana RadRails, ein wirklich nettes Produkt.

Das einzige Problem was ich bisher hatte, und das auch nur auf dem Laptop hier im Büro, war das grundlose verweigern jeder Art von Plugin-Installation via GEM.

Jeder Versuch wurde mit

ERROR: While executing gem ... (Errno::ENOENT)
No such file or directory - U:/

quitiert. Das Laufwerk U:/ ist mein Homedrive im Netzwerk.

Die Lösungsvorschläge aus dem Netz, die Umgebungsvariablen “GEM_HOME” und “GEM_PATH” zu setzen hatten leider keinen positiven Effekt.

Ein kleiner Eintrag in der gem Datei unter c:\ruby\bin\gem bringt die Erlösung:

#!C:/Ruby/bin/ruby.exe
#--
# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
# All rights reserved.
# See LICENSE.txt for permissions.
#++
ENV['HOME'] = "C:/ruby"
require 'rubygems'
require 'rubygems/gem_runner'
require 'rubygems/exceptions'
required_version = Gem::Requirement.new "> 1.8.3"
unless required_version.satisfied_by? Gem.ruby_version then
  abort "Expected Ruby Version #{required_version}, was #{Gem.ruby_version}"
end
args = ARGV.clone
begin
  Gem::GemRunner.new.run args
rescue Gem::SystemExitException => e
  exit e.exit_code
end

Vielleicht gibts noch eine bessere Lösung, so funktioniert es bei mir aber auf alle Fälle ohne herumdoktorn an den Umgebunsvariablen.

12Aug/090

Problem mit Unicode Zeichen in Javascript Alertbox

Wenn man man mal in die Verlegenheit kommt und versucht über Javascript eine z.B. Russische Fehlermeldung auszugeben gibt es folgendes Problem: Der Browser spielt nicht mit :(

<script language="javascript">
alert('Журналистка CNN Хала Горани беседует с Мэтью Чансом - он был знаком с Натальей');
</script>

Das Ergebnis, trotz korrekter UTF-8 Einstellung des Browsers und der Webseite, überzeugt leider nicht.

Internet_Explorer_Unicode_Javascript_Alert_Fehler

Die Lösung: Der Text muss vorher für Javascript vorbereitet werden, pures Unicode scheint da wohl nicht zu funktionieren.

<script language="javascript">
alert('\u0416\u0443\u0440\u043D\u0430\u043B\u0438\u0441\u0442\u043A\u0430 CNN \u0425\u0430\u043B\u0430 \u0413\u043E\u0440\u0430\u043D\u0438 \u0431\u0435\u0441\u0435\u0434\u0443\u0435\u0442 \u0441 \u041C\u044D\u0442\u044C\u044E \u0427\u0430\u043D\u0441\u043E\u043C - \u043E\u043D \u0431\u044B\u043B \u0437\u043D\u0430\u043A\u043E\u043C \u0441 \u041D\u0430\u0442\u0430\u043B\u044C\u0435\u0439');
</script>

Schon besser finde ich ;)

Internet_Explorer_Unicode_Javascript_Alert_Ok

Einen praktischen Konverter gibt es hier: http://rishida.net/tools/conversion/

 /yay

p.s. das Russisch ist von einer zufälligen Webseite, und Google sagt ich beleidige mit dem Satz niemanden. Wenn doch tuts mir leid ;)

5Aug/090

LastLogon Lookup

Ein Problem bei einer Windows 2000 Domäne, d.h. einer Domäne die sich nicht im einheitlichen Modus befinden, ist das nicht alle Eigenschaften von Objekten innerhalb der Domäne zwischen den Domänencontrollern repliziert werden.

Dies Betrifft unter anderem auch die letzte Anmeldezeit eines Benutzerkontos.

Dieser Wert ist allerdings ziemlich nützlich um z.B. Benutzerleichen zu identifizieren.

Mir ist kein Windows Boardmittel bekannt mit dem man diese Werte aus einer Domäne über alle Domänencontroller hinweg auslesen kann, deswegen habe ich mir ein kleines Tool geschrieben.

Programmaufruf

LastLogon Lookup.exe > Datei.cvs

Ausgabe

distinguishedName;sAMAccountName;LogonCount;LastLogon;DomainController

...

Das ganze wird dann über alle DCs für alle Benutzer ausgelesen.

Der Benutzeraccount unter dem das Progamm läuft muss mindestens entsprechende Werte aus dem AD lesen können (wär auch komisch sonst), eine Schreibberechtigung ist natürlich nicht notwendig. Das Ergebnis ist einfach mit Access/Excel/Stift und Zettel o.Ä. auszuwerten.

Geschrieben in VB.NET, wenn lieb gefragt wird schick ich bestimmt auch den Quellcode zu ;)

Download: LastLogon Lookup.zip

16Mai/090

World of Warcraft in einer VM

WoW in einer VM

Endlich hinbekommen. :)

WoW Version: 3.1.1

FPS: 8-20

Jetzt brauch ich irgendwann nur noch viel zeit und einen Account dem eine Sperrung nichts ausmacht ^^

19Mrz/090

Mein Inventory arbeitet gegen mich…

In 2 Wochen haben wir eine Prüfung durch Microsoft zu erwarten und momentan bin ich dabei unseren Installationspool zu bereinigen. Wäre alles gar nicht so schwer wenn meine Inventarisierungslösung (Centennial Discovery 2007) mich nicht zur Weißglut treiben würde.

Die Datenbank ist bei ~2000 Clients so aufgebläht das sich darin arbeiten eher schwierig gestaltet und die Softwareerkennung (Vor allem Office und Office Pro) nicht unter aller Sau wär.

Wenn jemand ein gutes Produkt hat was oben genannte Punkte beherrscht und trotzdem eine Offline Datenbank zur Recherche und Auswertung bietet wäre toll den Namen davon zu erfahren, denn die Supportverträge für mein Produkt habe ich erstmal nicht verlängert ;D