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.
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.
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.

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

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
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

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 ^^
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