Archives

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 …

IIS >= 6.0, ASP.NET und VMware.VimClient

Wie ich eben lernen musste kommt VMware.VimClient (Teil von Power CLI) ab 2003/IIS6 nicht mit den dort limitierten Stack von 256 KB (KB932909) zurecht. Man kann das aber umgehen in dem man einen Thread mit entsprechendem Stack startet: public void SomeHandler(object sender,EventArgs e) { Thread oWorker=new Thread(new ParameterizedThreadStart(SomeHandlerWorker),1024*1024*4); // 4 MB Stack oWorker.Start(e); oWorker.Join(); } …