Archives

TSADMIN das zittern und zuckeln austreiben

TSADMIN.MSC (genial als Remotedesktopdienste-Manager eingedeutscht) hat ein Problem – es ist nicht für Farmen mit zig Servern und tausenden Sessions gemacht. Spätestens bei 600-800 Sessions und einer entsprechenden Logon/Logoffrate ist das Ding unbenutzbar weil die Sessions über WTSWaitSystemEvent live in die Liste eingearbeitet werden – und das kann nicht abgestellt werden (konfigurierbar ist nur Prozessupdatefrequenz). Glücklicherweise …

Temporäre Dateien heißen mit Absicht so

Es gibt da eine wunderbare Funktion im .NET Framework welche einem Pfad und Name einer temporären Datei liefert: Path.GetTempFileName() – man sollte den Namen aber auch Ernst nehmen und die temporären Dateien nach Benutzung wieder löschen. Nicht nur weil sonst möglicherweise irgendwann die Platte vollläuft, sondern weil die Funktion nur einen 16 Bit Zähler hat …

WindowsPhone Background Agent Test Start

Wenn man am Windows Phone einen Background Agent für Hintergrundupdates hat will man den auch testen (und nicht ca. 30 min warten bis das OS den Agent anwirft) – das ist gut dokumentiert und funktioniert mit ScheduledActionService.LaunchForTest(“MeineApp”, TimeSpan.FromSeconds(30)) In der Doku steht allerdings NICHT dass dieser Aufruf wenn das XAP aus dem Store kommt (und damit vermutlich nicht …

WMI-Spaß mit Linq

Wenn man in .NET eine WMI Query erzeugt ManagementObjectSearcher oWMISearcher = new ManagementObjectSearcher(@”\meinserverrootcimv2″, “select * from win32_process”); Dann bekommt mein eine ManagementObjectCollection zurück. Das Blöde: Die ist von Haus aus nicht “Linq-fähig” (warum habe ich verdrängt). Eine Statement wie folgendes (um die Top 10 Speicherfresser zu ermitteln) List<ManagementObject> oWMIObjects = (from ManagementObject oMO in oWMISearcher.Get() …

RDSH Seltsamkeiten

Scheinbar beginnt ein RDSH (ab 2008) ab einer gewissen Last damit die Environmentvariable CLIENTNAME von Logonscripts aus nicht oder erst zu spät korrekt aufzulösen (obwohls schon längst in der Registry steht) – erst wenn man die asynchrone Ausführung der Logonscripts (Computer oder User Configuration / Adm. Templates / System / Scripts – Computer gewinnt wie …

.NET 4.0 Bug: RegDeleteKeyEx remote auf XP

Im .NET Framework 4.0 führt Microsoft.Win32.RegistryKey.DeleteSubKeyTree() remote gegen einen XP Rechner geschossen zu einer netten Exception “The procedure number is out of range.”. Grund: Die Win32 Funktion RegDeleteKeyEx() wird erst ab Vista in advapi32.dll unterstützt (MSDN-Thread). Workaround: Selber rekursiv löschen, Beispiel:       [DllImport(“advapi32.dll”, EntryPoint = “RegDeleteKey”, SetLastError = true)]       public static extern int RegDeleteKey(IntPtr hKey, string sSubKey);       public static int RecurseDeleteKey(RegistryKey oKey, string sKey)       {          int nStatus;          RegistryKey oSubKey;          oSubKey = oKey.OpenSubKey(sKey);          foreach (string sSubKey in oSubKey.GetSubKeyNames())          {             if ((nStatus = RecurseDeleteKey(oSubKey, sSubKey)) != 0)             {                try { oSubKey.Close(); } catch (Exception) { }                return nStatus;             } …

PortUsers

Wer schon immer (filterbar) wissen wollte welches Programm in welcher Sitzung (Terminalserver) von welchem Rechner (Terminalserver) mit welchem User auf welche Ports auf welchen Zielen zugreift: PortUsers kann das 😀

RemoteApps und das Logoff-Problem

Selbst wenn man alle Möglichkeiten wie tsconfig.msc/RDP-Tcp/Sitzungen/Wenn das Sitzungslimit erreicht oder die Verbindung getrennt wurde: Sitzung beenden lokale Policy: Computereinstellungen/Adm.Vorlagen/Remotedesktopdienste/Remotedesktopsitzungs-Host/Sitzungslimits/Zeitlimit für die Abmeldung bei RemoteApp-Sitzungen festlegen (aktiviert/sofort) ausnutzt passiert es immer wieder dass Sessions im disconnected Status (wenn auch nur für kurze Zeit) herum lungern. Wenn man nun viele Sessions mit einem Benutzer betreibt und …

Tools

GARCopy – das Ding mit dem man (wenn man Administrator ist und es auch elevated startet) unabhängig von ACLs im Backupkontext Dinge kopieren kann. GARDirSize – das Ding mit dem man (wenn man Administrator ist und es auch elevated startet) unabhängig von ACLs die Größe (Anzahl der Dateien+Bytes) eines Verzeichnisses ermitteln kann. GARDelete – das …