<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DZone Snippets: Mellerbeck's Code Snippets</title>
    <link>http://snippets.dzone.com/posts</link>
    <pubDate>Fri, 08 Aug 2008 18:41:13 GMT</pubDate>
    <description>DZone Snippets: Mellerbeck's Code Snippets</description>
    <item>
      <title>Get username of logged in remote user, vb.net Win32_ComputerSystem Version</title>
      <link>http://snippets.dzone.com/posts/show/5478</link>
      <description>// description of your code here&lt;br /&gt;This is an even shorter method of getting the remote user through WMI&lt;br /&gt;&lt;code&gt;&lt;br /&gt;Imports System.Management&lt;br /&gt;Imports System.DirectoryServices&lt;br /&gt;Imports Microsoft.Win32&lt;br /&gt;Imports System.Runtime.InteropServices&lt;br /&gt;Module Module1&lt;br /&gt;    Dim objManagementClass As ManagementClass&lt;br /&gt;    Dim objManagementScope As ManagementScope&lt;br /&gt;    Dim objManagementBaseObject As ManagementBaseObject&lt;br /&gt;    Public Strcomputer As String = ""&lt;br /&gt;    Sub Main()&lt;br /&gt;&lt;br /&gt;        Dim WMIScope As Management.ManagementScope&lt;br /&gt;        Dim WMIConnectionOptions As New Management.ConnectionOptions&lt;br /&gt;        Dim strRootDomain As String&lt;br /&gt;        Dim objRootLDAP As DirectoryEntry&lt;br /&gt;        Dim query As ManagementObjectSearcher&lt;br /&gt;        Dim queryCollection As ManagementObjectCollection&lt;br /&gt;        Dim oq As New System.Management.ObjectQuery&lt;br /&gt;        Dim mo As New ManagementObject&lt;br /&gt;        Dim UserDomain As String&lt;br /&gt;        Dim UserID As String&lt;br /&gt;        Dim StrLoggedUserSID() As Byte&lt;br /&gt;&lt;br /&gt;        Try&lt;br /&gt;&lt;br /&gt;            Dim Strcomputer As String = My.Application.CommandLineArgs.Item(0)&lt;br /&gt;&lt;br /&gt;            With WMIConnectionOptions&lt;br /&gt;                .Impersonation = System.Management.ImpersonationLevel.Impersonate&lt;br /&gt;                .Authentication = System.Management.AuthenticationLevel.Packet&lt;br /&gt;&lt;br /&gt;            End With&lt;br /&gt;&lt;br /&gt;            WMIScope = New Management.ManagementScope("\\" &amp; _&lt;br /&gt;            Strcomputer &amp; "\root\cimv2", WMIConnectionOptions)&lt;br /&gt;&lt;br /&gt;            objRootLDAP = New DirectoryEntry("LDAP://RootDSE")&lt;br /&gt;            strRootDomain = objRootLDAP.Properties.Item("rootDomainNamingContext").Value.ToString&lt;br /&gt;&lt;br /&gt;            oq = New System.Management.ObjectQuery("SELECT UserName from Win32_ComputerSystem")&lt;br /&gt;            query = New ManagementObjectSearcher(WMIScope, oq)&lt;br /&gt;            queryCollection = query.Get()&lt;br /&gt;&lt;br /&gt;            For Each oReturn As ManagementObject In queryCollection&lt;br /&gt;&lt;br /&gt;                If Not oReturn("UserName") Is Nothing Then&lt;br /&gt;                    Console.WriteLine(oReturn("UserName").ToString)&lt;br /&gt;                Else&lt;br /&gt;                    Console.WriteLine("Not logged in")&lt;br /&gt;                End If&lt;br /&gt;&lt;br /&gt;            Next&lt;br /&gt;&lt;br /&gt;        Catch ex As Exception&lt;br /&gt;&lt;br /&gt;            Console.WriteLine(ex.ToString)&lt;br /&gt;&lt;br /&gt;        End Try&lt;br /&gt;&lt;br /&gt;    End Sub&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Thu, 08 May 2008 21:36:42 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/5478</guid>
      <author>mellerbeck (Michael Ellerbeck)</author>
    </item>
    <item>
      <title>Get uptime of remote computer using WMI</title>
      <link>http://snippets.dzone.com/posts/show/5472</link>
      <description>// description of your code here&lt;br /&gt;Get uptime of remote computer using WMI, I'm not sure the convert time function is correct, it gives different results than psinfo.exe&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&lt;br /&gt;Private Function GetUptime() As String&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;        Dim WMIScope As Management.ManagementScope&lt;br /&gt;        Dim WMIConnectionOptions As New Management.ConnectionOptions&lt;br /&gt;        Dim strRootDomain As String&lt;br /&gt;        Dim objRootLDAP As DirectoryEntry&lt;br /&gt;        Dim query As ManagementObjectSearcher&lt;br /&gt;        Dim queryCollection As ManagementObjectCollection&lt;br /&gt;        Dim oq As New System.Management.ObjectQuery&lt;br /&gt;        Dim mo As New ManagementObject&lt;br /&gt;        Dim perftimestamp As String = ""&lt;br /&gt;        Dim perttimefreq As String = ""&lt;br /&gt;        Dim counter As String = ""&lt;br /&gt;        Dim iUptimeInSec As Long = 0&lt;br /&gt;&lt;br /&gt;        With WMIConnectionOptions&lt;br /&gt;            .Impersonation = System.Management.ImpersonationLevel.Impersonate&lt;br /&gt;            .Authentication = System.Management.AuthenticationLevel.Packet&lt;br /&gt;&lt;br /&gt;        End With&lt;br /&gt;&lt;br /&gt;        WMIScope = New Management.ManagementScope("\\" &amp; _&lt;br /&gt;        Strcomputer &amp; "\root\cimv2", WMIConnectionOptions)&lt;br /&gt;&lt;br /&gt;        objRootLDAP = New DirectoryEntry("LDAP://RootDSE")&lt;br /&gt;        strRootDomain = objRootLDAP.Properties.Item("rootDomainNamingContext").Value.ToString&lt;br /&gt;&lt;br /&gt;        oq = New System.Management.ObjectQuery("select * from Win32_PerfRawData_PerfOS_System")&lt;br /&gt;        query = New ManagementObjectSearcher(WMIScope, oq)&lt;br /&gt;        queryCollection = query.Get()&lt;br /&gt;&lt;br /&gt;        For Each oReturn As ManagementObject In queryCollection&lt;br /&gt;            perftimestamp = oReturn("Timestamp_Object").ToString()&lt;br /&gt;            perttimefreq = oReturn("Frequency_Object").ToString()&lt;br /&gt;            counter = oReturn("SystemUpTime").ToString()&lt;br /&gt;        Next&lt;br /&gt;&lt;br /&gt;        ' Calculation in seconds:&lt;br /&gt;        iUptimeInSec = Convert.ToInt64((Double.Parse(perftimestamp) - Double.Parse(counter)) / Double.Parse(perttimefreq))&lt;br /&gt;&lt;br /&gt;        ' convert the seconds&lt;br /&gt;        Return ConvertTime(iUptimeInSec)&lt;br /&gt;&lt;br /&gt;    End Function&lt;br /&gt;&lt;br /&gt;    Private Function ConvertTime(ByVal seconds As Long) As String&lt;br /&gt;&lt;br /&gt;        Dim ConvSec As Long&lt;br /&gt;        Dim ConvMin As Long&lt;br /&gt;        Dim ConvHour As Long&lt;br /&gt;        Dim ConvDays As Long&lt;br /&gt;&lt;br /&gt;        Math.DivRem(seconds, 60, ConvSec)&lt;br /&gt;&lt;br /&gt;        Math.DivRem(seconds, 3600, ConvMin)&lt;br /&gt;        ConvMin = ConvMin / 60&lt;br /&gt;&lt;br /&gt;        Math.DivRem(seconds, (3600 * 24), ConvHour)&lt;br /&gt;        ConvHour = ConvHour / 3600&lt;br /&gt;&lt;br /&gt;        ConvDays = (seconds / (3600 * 24))&lt;br /&gt;&lt;br /&gt;        Return (ConvDays.ToString() + " days " + ConvHour.ToString() + " hours " + ConvMin.ToString() + " minutes " + ConvSec.ToString() + " seconds ")&lt;br /&gt;&lt;br /&gt;    End Function&lt;br /&gt;&lt;br /&gt;'or you could try this method which still doesn't match psinfo or systeminfo but it is closer&lt;br /&gt;&lt;br /&gt;Private Function GetUptime2() As String&lt;br /&gt;&lt;br /&gt;        Dim WMIScope As Management.ManagementScope&lt;br /&gt;        Dim WMIConnectionOptions As New Management.ConnectionOptions&lt;br /&gt;        Dim strRootDomain As String&lt;br /&gt;        Dim objRootLDAP As DirectoryEntry&lt;br /&gt;        Dim query As ManagementObjectSearcher&lt;br /&gt;        Dim queryCollection As ManagementObjectCollection&lt;br /&gt;        Dim oq As New System.Management.ObjectQuery&lt;br /&gt;        Dim mo As New ManagementObject&lt;br /&gt;        Dim perftimestamp As String = ""&lt;br /&gt;        Dim perttimefreq As String = ""&lt;br /&gt;        Dim counter As String = ""&lt;br /&gt;        Dim iUptimeInSec As Long = 0&lt;br /&gt;        Dim LastBootUpTime As DateTime&lt;br /&gt;        Dim dateNow As DateTime = Date.Now&lt;br /&gt;&lt;br /&gt;        With WMIConnectionOptions&lt;br /&gt;            .Impersonation = System.Management.ImpersonationLevel.Impersonate&lt;br /&gt;            .Authentication = System.Management.AuthenticationLevel.Packet&lt;br /&gt;&lt;br /&gt;        End With&lt;br /&gt;&lt;br /&gt;        WMIScope = New Management.ManagementScope("\\" &amp; _&lt;br /&gt;        Strcomputer &amp; "\root\cimv2", WMIConnectionOptions)&lt;br /&gt;&lt;br /&gt;        objRootLDAP = New DirectoryEntry("LDAP://RootDSE")&lt;br /&gt;        strRootDomain = objRootLDAP.Properties.Item("rootDomainNamingContext").Value.ToString&lt;br /&gt;&lt;br /&gt;        oq = New System.Management.ObjectQuery("Select * from Win32_OperatingSystem")&lt;br /&gt;&lt;br /&gt;        query = New ManagementObjectSearcher(WMIScope, oq)&lt;br /&gt;        queryCollection = query.Get()&lt;br /&gt;&lt;br /&gt;        For Each oReturn As ManagementObject In queryCollection&lt;br /&gt;&lt;br /&gt;            LastBootUpTime = System.Management.ManagementDateTimeConverter.ToDateTime(oReturn("LastBootUpTime").ToString)&lt;br /&gt;            &lt;br /&gt;        Next&lt;br /&gt;&lt;br /&gt;        Dim ts As TimeSpan = dateNow.Subtract(LastBootUpTime)&lt;br /&gt;        Console.WriteLine(ts.Days.ToString + " days " + ts.Hours.ToString + " hours " + ts.Minutes.ToString + " minutes " + ts.Seconds.ToString + " seconds ")&lt;br /&gt;&lt;br /&gt;    End Function&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Wed, 07 May 2008 15:20:08 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/5472</guid>
      <author>mellerbeck (Michael Ellerbeck)</author>
    </item>
    <item>
      <title>Get the username of the logged on user on remote machine</title>
      <link>http://snippets.dzone.com/posts/show/5465</link>
      <description>// description of your code here&lt;br /&gt;Cheats a little by getting the owner of explorer.exe to derive the logged in user. Add reference to System.Management and I think DirectoryServices&lt;br /&gt;&lt;code&gt;&lt;br /&gt;Imports System.Management&lt;br /&gt;Imports System.DirectoryServices&lt;br /&gt;Imports Microsoft.Win32&lt;br /&gt;Imports System.Runtime.InteropServices&lt;br /&gt;Module Module1&lt;br /&gt;    Dim objManagementClass As ManagementClass&lt;br /&gt;    Dim objManagementScope As ManagementScope&lt;br /&gt;    Dim objManagementBaseObject As ManagementBaseObject&lt;br /&gt;    Sub Main()&lt;br /&gt;&lt;br /&gt;        Dim WMIScope As Management.ManagementScope&lt;br /&gt;        Dim WMIConnectionOptions As New Management.ConnectionOptions&lt;br /&gt;        Dim strRootDomain As String&lt;br /&gt;        Dim objRootLDAP As DirectoryEntry&lt;br /&gt;        Dim query As ManagementObjectSearcher&lt;br /&gt;        Dim queryCollection As ManagementObjectCollection&lt;br /&gt;        Dim oq As New System.Management.ObjectQuery&lt;br /&gt;        Dim mo As New ManagementObject&lt;br /&gt;        Dim UserDomain As String&lt;br /&gt;        Dim UserID As String&lt;br /&gt;        Dim StrLoggedUserSID() As Byte&lt;br /&gt;&lt;br /&gt;        Dim Strcomputer As String = My.Application.CommandLineArgs.Item(0)&lt;br /&gt;        'Console.WriteLine(Strcomputer)&lt;br /&gt;&lt;br /&gt;        With WMIConnectionOptions&lt;br /&gt;            .Impersonation = System.Management.ImpersonationLevel.Impersonate&lt;br /&gt;            .Authentication = System.Management.AuthenticationLevel.Packet&lt;br /&gt;&lt;br /&gt;        End With&lt;br /&gt;&lt;br /&gt;        WMIScope = New Management.ManagementScope("\\" &amp; _&lt;br /&gt;        strcomputer &amp; "\root\cimv2", WMIConnectionOptions)&lt;br /&gt;&lt;br /&gt;        objRootLDAP = New DirectoryEntry("LDAP://RootDSE")&lt;br /&gt;        strRootDomain = objRootLDAP.Properties.Item("rootDomainNamingContext").Value.ToString&lt;br /&gt;&lt;br /&gt;        oq = New System.Management.ObjectQuery("SELECT * from Win32_process Where Name='explorer.exe' and SessionID=0")&lt;br /&gt;        query = New ManagementObjectSearcher(WMIScope, oq)&lt;br /&gt;        queryCollection = query.Get()&lt;br /&gt;&lt;br /&gt;        If queryCollection.Count = 0 Then&lt;br /&gt;            Console.WriteLine("No user logged on")&lt;br /&gt;            Exit Sub&lt;br /&gt;        Else&lt;br /&gt;&lt;br /&gt;            Dim strKeyPath As String = "SOFTWARE\Microsoft\Windows NT\CurrentVersion\WinLogon"&lt;br /&gt;            objManagementScope = New ManagementScope&lt;br /&gt;            objManagementScope.Path.Server = strcomputer&lt;br /&gt;            objManagementScope.Path.NamespacePath = "root\default"&lt;br /&gt;            objManagementScope.Options.EnablePrivileges = True&lt;br /&gt;            objManagementScope.Options.Impersonation = ImpersonationLevel.Impersonate&lt;br /&gt;            objManagementScope.Connect()&lt;br /&gt;&lt;br /&gt;            objManagementClass = New ManagementClass("stdRegProv")&lt;br /&gt;            objManagementClass.Scope = objManagementScope&lt;br /&gt;            objManagementBaseObject = objManagementClass.GetMethodParameters("EnumValues")&lt;br /&gt;            objManagementBaseObject.SetPropertyValue("hDefKey", CType("&amp;H" &amp; Hex(RegistryHive.LocalMachine), Long))&lt;br /&gt;            objManagementBaseObject.SetPropertyValue("sSubKeyName", strKeyPath)&lt;br /&gt;&lt;br /&gt;            UserDomain = CStr(GetRegValues("DefaultDomainName", strKeyPath, "HKLM"))&lt;br /&gt;            UserID = CStr(GetRegValues("DefaultUserName", strKeyPath, "HKLM"))&lt;br /&gt;&lt;br /&gt;            Console.WriteLine(UserID)&lt;br /&gt;&lt;br /&gt;            'If the SID or the full name is needed sometime in the future the code is below&lt;br /&gt;&lt;br /&gt;            'If UCase(UserDomain) = UCase(strcomputer) Then&lt;br /&gt;            'Console.WriteLine("Logged on user = " &amp; UserDomain &amp; "\" &amp; UserID &amp; " (local user)")&lt;br /&gt;            'Exit Sub&lt;br /&gt;            'End If&lt;br /&gt;&lt;br /&gt;            'Dim LdapBind As String&lt;br /&gt;            'LdapBind = ("LDAP://" &amp; strRootDomain)&lt;br /&gt;&lt;br /&gt;            'Dim deEntry3 As New DirectoryEntry(LdapBind)&lt;br /&gt;            'Dim DSearch As New DirectorySearcher(deEntry3)&lt;br /&gt;&lt;br /&gt;            'With DSearch&lt;br /&gt;            '    .SearchScope = SearchScope.Subtree&lt;br /&gt;            '    .Filter = "(&amp;(objectclass=user)(sAMAccountName=" &amp; UserID &amp; "))"&lt;br /&gt;            '    .PropertiesToLoad.Add("name")&lt;br /&gt;            '    .PropertiesToLoad.Add("sAMAccountName")&lt;br /&gt;            '    .PropertiesToLoad.Add("distinguishedName")&lt;br /&gt;            'End With&lt;br /&gt;&lt;br /&gt;            'Dim sResultSet As SearchResult&lt;br /&gt;&lt;br /&gt;            'For Each sResultSet In DSearch.FindAll()&lt;br /&gt;&lt;br /&gt;            '    If UCase(GetProperty(sResultSet, "sAMAccountName")) = UCase(UserID) Then&lt;br /&gt;&lt;br /&gt;            '        Console.WriteLine("Logged on user = " &amp; GetProperty(sResultSet, "name") &amp; " (as " &amp; _&lt;br /&gt;            '        UserDomain &amp; "\" &amp; UserID &amp; ")")&lt;br /&gt;&lt;br /&gt;            '        Dim deEntry4 As New DirectoryEntry("LDAP://" &amp; GetProperty(sResultSet, "distinguishedName").ToString)&lt;br /&gt;            '        StrLoggedUserSID = CType(deEntry4.Properties("objectSid").Value, Byte())&lt;br /&gt;            '        Console.WriteLine("User's SID = " &amp; ConvertSid(StrLoggedUserSID))&lt;br /&gt;            '    End If&lt;br /&gt;            'Next&lt;br /&gt;&lt;br /&gt;        End If&lt;br /&gt;    End Sub&lt;br /&gt;&lt;br /&gt;    Public Function GetProperty(ByVal srSearchResult As SearchResult, ByVal strPropertyName As String) As String&lt;br /&gt;        If srSearchResult.Properties.Contains(strPropertyName) Then&lt;br /&gt;            Return srSearchResult.Properties(strPropertyName)(0).ToString()&lt;br /&gt;        Else&lt;br /&gt;            Return String.Empty&lt;br /&gt;        End If&lt;br /&gt;    End Function&lt;br /&gt;    Private Function GetRegValues(ByVal regkeyValue As String, ByVal regkey As String, ByVal Hive As String)&lt;br /&gt;&lt;br /&gt;        Select Case Hive&lt;br /&gt;            Case "HKLM"&lt;br /&gt;                Hive = CStr(RegistryHive.LocalMachine)&lt;br /&gt;            Case "HKU"&lt;br /&gt;                Hive = CStr(RegistryHive.Users)&lt;br /&gt;            Case "HKCU"&lt;br /&gt;                Hive = CStr(RegistryHive.CurrentUser)&lt;br /&gt;            Case "HKCR"&lt;br /&gt;                Hive = CStr(RegistryHive.ClassesRoot)&lt;br /&gt;        End Select&lt;br /&gt;&lt;br /&gt;        objManagementBaseObject = objManagementClass.GetMethodParameters("GetStringValue")&lt;br /&gt;        objManagementBaseObject.SetPropertyValue("hDefKey", CType("&amp;H" &amp; Hex(Hive), Long))&lt;br /&gt;        objManagementBaseObject.SetPropertyValue("sSubKeyName", regkey)&lt;br /&gt;        objManagementBaseObject.SetPropertyValue("sValueName", regkeyValue)&lt;br /&gt;        objManagementBaseObject = objManagementClass.InvokeMethod("GetStringValue", objManagementBaseObject, Nothing)&lt;br /&gt;        GetRegValues = objManagementBaseObject("sValue")&lt;br /&gt;&lt;br /&gt;    End Function&lt;br /&gt;&lt;br /&gt;    Public Function ConvertSid(ByVal sid As Byte()) As String&lt;br /&gt;&lt;br /&gt;        Dim sidString As String&lt;br /&gt;        Dim sidPtr As IntPtr&lt;br /&gt;        Dim sidStringPtr As IntPtr&lt;br /&gt;        Dim res As Integer&lt;br /&gt;&lt;br /&gt;        sidPtr = Marshal.AllocHGlobal(sid.Length)&lt;br /&gt;        Marshal.Copy(sid, 0, sidPtr, sid.Length)&lt;br /&gt;        res = ConvertSidToStringSid(sidPtr, sidStringPtr)&lt;br /&gt;        If res = 0 Then&lt;br /&gt;            Throw New System.ComponentModel.Win32Exception(Marshal.GetLastWin32Error())&lt;br /&gt;        End If&lt;br /&gt;        sidString = Marshal.PtrToStringAuto(sidStringPtr)&lt;br /&gt;        Marshal.FreeHGlobal(sidPtr)&lt;br /&gt;        Marshal.FreeHGlobal(sidStringPtr)&lt;br /&gt;&lt;br /&gt;        Return sidString&lt;br /&gt;&lt;br /&gt;    End Function&lt;br /&gt;&lt;br /&gt;    &lt;DllImport("advapi32.dll", CharSet:=CharSet.Auto, SetLastError:=True)&gt; _&lt;br /&gt;    Private Function ConvertSidToStringSid(ByVal pSID As IntPtr, ByRef pSidString As IntPtr) As Integer&lt;br /&gt;    End Function&lt;br /&gt;&lt;br /&gt;End Module&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Mon, 05 May 2008 20:43:57 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/5465</guid>
      <author>mellerbeck (Michael Ellerbeck)</author>
    </item>
    <item>
      <title>Pulling allday events from the public calendar of an exchange 2003 server vb.net webdav</title>
      <link>http://snippets.dzone.com/posts/show/4379</link>
      <description>// description of your code here&lt;br /&gt;This is code that pulls all day events from an exchange 2003 server using webdav.&lt;br /&gt;&lt;code&gt;&lt;br /&gt;Dim Request As System.Net.HttpWebRequest&lt;br /&gt;        Dim Response As System.Net.HttpWebResponse&lt;br /&gt;        Dim MyCredentialCache As System.Net.CredentialCache&lt;br /&gt;        Dim strPassword As String&lt;br /&gt;        Dim strDomain As String&lt;br /&gt;        Dim strUserName As String&lt;br /&gt;        Dim strCalendarURI As String&lt;br /&gt;        Dim strQuery As String&lt;br /&gt;        Dim bytes() As Byte&lt;br /&gt;        Dim RequestStream As System.IO.Stream&lt;br /&gt;        Dim ResponseStream As System.IO.Stream&lt;br /&gt;        Dim ResponseXmlDoc As System.Xml.XmlDocument&lt;br /&gt;        Dim HrefNodes As System.Xml.XmlNodeList&lt;br /&gt;        Dim SizeNodes As System.Xml.XmlNodeList&lt;br /&gt;        Dim SubjectNodeList As System.Xml.XmlNodeList&lt;br /&gt;        Dim LocationNodeList As System.Xml.XmlNodeList&lt;br /&gt;        Dim StartTimeNodeList As System.Xml.XmlNodeList&lt;br /&gt;        Dim EndTimeNodeList As System.Xml.XmlNodeList&lt;br /&gt;        Dim BusyStatusNodeList As System.Xml.XmlNodeList&lt;br /&gt;        Dim InstanceTypeNodeList As System.Xml.XmlNodeList&lt;br /&gt;        Dim output As String = ""&lt;br /&gt;&lt;br /&gt;        Try&lt;br /&gt;            ' Initialize variables.&lt;br /&gt;            strUserName = "user"&lt;br /&gt;            strPassword = "password"&lt;br /&gt;            strDomain = "domain"&lt;br /&gt;            &lt;br /&gt;            strCalendarURI = "http://mail-server/public/Office Calendar/"&lt;br /&gt;&lt;br /&gt;            Dim ddate As DateTime = Today&lt;br /&gt;&lt;br /&gt;            Dim sStartTime As String = String.Format("{0:yyyy/MM/dd}", ddate) &amp; " 07:00:00' "&lt;br /&gt;            Dim sEndTime As String = String.Format("{0:yyyy/MM/dd}", ddate.AddDays(1)) &amp; " 07:00:00' "&lt;br /&gt;&lt;br /&gt;            strQuery = "&lt;?xml version=""1.0""?&gt;" &amp; _&lt;br /&gt;                   "&lt;g:searchrequest xmlns:g=""DAV:""&gt;" &amp; _&lt;br /&gt;                   "&lt;g:sql&gt;SELECT ""urn:schemas:calendar:alldayevent"", ""urn:schemas:calendar:location"", ""urn:schemas:httpmail:subject"", " &amp; _&lt;br /&gt;                   """urn:schemas:calendar:dtstart"", ""urn:schemas:calendar:dtend"", " &amp; _&lt;br /&gt;                   """urn:schemas:calendar:busystatus"", ""urn:schemas:calendar:instancetype"" " &amp; _&lt;br /&gt;                   "FROM Scope('SHALLOW TRAVERSAL OF """ &amp; strCalendarURI &amp; """') " &amp; _&lt;br /&gt;                   "WHERE ""DAV:contentclass"" = 'urn:content-classes:appointment' " &amp; _&lt;br /&gt;                   "AND ""urn:schemas:calendar:alldayevent"" = TRUE " &amp; _&lt;br /&gt;                   "AND ""urn:schemas:calendar:dtstart"" &amp;lt;= '" &amp; sStartTime &amp; _&lt;br /&gt;                    "AND ""urn:schemas:calendar:dtend"" &amp;gt;= '" &amp; sEndTime &amp; _&lt;br /&gt;                    "ORDER BY ""urn:schemas:calendar:dtstart"" ASC" &amp; _&lt;br /&gt;                   "&lt;/g:sql&gt;&lt;/g:searchrequest&gt;"&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;            MyCredentialCache = New System.Net.CredentialCache&lt;br /&gt;            MyCredentialCache.Add(New System.Uri(strCalendarURI), _&lt;br /&gt;                "NTLM", _&lt;br /&gt;                New System.Net.NetworkCredential(strUserName, strPassword, strDomain) _&lt;br /&gt;                )&lt;br /&gt;&lt;br /&gt;            ' Create the PUT HttpWebRequest object.&lt;br /&gt;            Request = CType(System.Net.WebRequest.Create(strCalendarURI), _&lt;br /&gt;                            System.Net.HttpWebRequest)&lt;br /&gt;&lt;br /&gt;            ' Add the network credentials to the request.&lt;br /&gt;            Request.Credentials = MyCredentialCache&lt;br /&gt;&lt;br /&gt;            ' Specify the SEARCH method.&lt;br /&gt;            Request.Method = "SEARCH"&lt;br /&gt;&lt;br /&gt;            ' Encode the body using UTF-8.&lt;br /&gt;            bytes = System.Text.Encoding.UTF8.GetBytes(strQuery)&lt;br /&gt;&lt;br /&gt;            ' Set the content header length.  This must be&lt;br /&gt;            ' done before writing data to the request stream.&lt;br /&gt;            Request.ContentLength = bytes.Length&lt;br /&gt;&lt;br /&gt;            ' Get a reference to the request stream.&lt;br /&gt;            RequestStream = Request.GetRequestStream()&lt;br /&gt;&lt;br /&gt;            ' Write the message body to the request stream.&lt;br /&gt;            RequestStream.Write(bytes, 0, bytes.Length)&lt;br /&gt;&lt;br /&gt;            ' Close the Stream object to release the connection&lt;br /&gt;            ' for further use.&lt;br /&gt;            RequestStream.Close()&lt;br /&gt;&lt;br /&gt;            ' Set the Content Type header.&lt;br /&gt;            Request.ContentType = "text/xml"&lt;br /&gt;&lt;br /&gt;            ' Set the Translate header.&lt;br /&gt;            Request.Headers.Add("Translate", "F")&lt;br /&gt;&lt;br /&gt;            ' Send the SEARCH method request and get the&lt;br /&gt;            ' response from the server.&lt;br /&gt;            Response = CType(Request.GetResponse(), System.Net.HttpWebResponse)&lt;br /&gt;&lt;br /&gt;            ' Get the XML response stream.&lt;br /&gt;            ResponseStream = Response.GetResponseStream()&lt;br /&gt;&lt;br /&gt;            ' Create the XmlDocument object from the XML response stream.&lt;br /&gt;            ResponseXmlDoc = New System.Xml.XmlDocument&lt;br /&gt;            ResponseXmlDoc.Load(ResponseStream)&lt;br /&gt;            &lt;br /&gt;            ' Build a list of the DAV:href XML nodes, corresponding to the folders&lt;br /&gt;            ' in the mailbox.  The DAV: namespace is typically assgigned the a:&lt;br /&gt;            ' prefix in the XML response body.&lt;br /&gt;            HrefNodes = ResponseXmlDoc.GetElementsByTagName("a:href")&lt;br /&gt;&lt;br /&gt;            ' Build a list of the urn:schemas:httpmail:subject XML nodes,&lt;br /&gt;            ' corresponding to the calendar item subjects returned in the search request.&lt;br /&gt;            ' The urn:schemas:httpmail: namespace is typically&lt;br /&gt;            ' assigned the e: prefix in the XML response body.&lt;br /&gt;            SubjectNodeList = ResponseXmlDoc.GetElementsByTagName("e:subject")&lt;br /&gt;&lt;br /&gt;            ' Build a list of the urn:schemas:calendar:location XML nodes,&lt;br /&gt;            ' corresponding to the calendar item locations returned in the search request.&lt;br /&gt;            ' The urn:schemas:calendar: namespace is typically&lt;br /&gt;            ' assigned the d: prefix in the XML response body.&lt;br /&gt;            LocationNodeList = ResponseXmlDoc.GetElementsByTagName("d:location")&lt;br /&gt;&lt;br /&gt;            ' Build a list of the urn:schemas:calendar:dtstart XML nodes,&lt;br /&gt;            ' corresponding to the calendar item locations returned in the search request.&lt;br /&gt;            StartTimeNodeList = ResponseXmlDoc.GetElementsByTagName("d:dtstart")&lt;br /&gt;&lt;br /&gt;            ' Build a list of the urn:schemas:calendar:dtend XML nodes,&lt;br /&gt;            ' corresponding to the calendar item locations returned in the search request.&lt;br /&gt;            EndTimeNodeList = ResponseXmlDoc.GetElementsByTagName("d:dtend")&lt;br /&gt;&lt;br /&gt;            ' Build a list of the urn:schemas:calendar:busystatus XML nodes,&lt;br /&gt;            ' corresponding to the calendar item locations returned in the search request.&lt;br /&gt;            BusyStatusNodeList = ResponseXmlDoc.GetElementsByTagName("d:busystatus")&lt;br /&gt;&lt;br /&gt;            ' Build a list of the urn:schemas:calendar:instancetype XML nodes,&lt;br /&gt;            ' corresponding to the calendar item locations returned in the search request.&lt;br /&gt;            InstanceTypeNodeList = ResponseXmlDoc.GetElementsByTagName("d:instancetype")&lt;br /&gt;&lt;br /&gt;            ' Loop through the returned items (if any).&lt;br /&gt;            If SubjectNodeList.Count &gt; 0 Then&lt;br /&gt;&lt;br /&gt;                Dim i As Integer&lt;br /&gt;                For i = 0 To SubjectNodeList.Count - 1&lt;br /&gt;&lt;br /&gt;                    ' Display the subject.&lt;br /&gt;&lt;br /&gt;                    output = output &amp; SubjectNodeList(i).InnerText &amp; ControlChars.CrLf&lt;br /&gt;                    Console.WriteLine(" " + SubjectNodeList(i).InnerText)&lt;br /&gt;&lt;br /&gt;                    ' Display the location.&lt;br /&gt;                    'Console.WriteLine("  Location:      " + LocationNodeList(i).InnerText)&lt;br /&gt;&lt;br /&gt;                    ' Display the start time.&lt;br /&gt;                    'Console.WriteLine("  Start time:    " + StartTimeNodeList(i).InnerText)&lt;br /&gt;&lt;br /&gt;                    ' Display the end time.&lt;br /&gt;                    'Console.WriteLine("  End time:      " + EndTimeNodeList(i).InnerText)&lt;br /&gt;&lt;br /&gt;                    ' Display the busy status.&lt;br /&gt;                    'Console.WriteLine("  Busy status:   " + BusyStatusNodeList(i).InnerText)&lt;br /&gt;&lt;br /&gt;                    ' Display the instance type.&lt;br /&gt;                    'If InstanceTypeNodeList(i).InnerText = "0" Then&lt;br /&gt;                    '    Console.WriteLine("  Instance type: 0-Single appointment")&lt;br /&gt;                    'ElseIf InstanceTypeNodeList(i).InnerText = "1" Then&lt;br /&gt;                    '    Console.WriteLine("  Instance type: 1-Master recurring appointment")&lt;br /&gt;                    'ElseIf InstanceTypeNodeList(i).InnerText = "2" Then&lt;br /&gt;                    '    Console.WriteLine("  Instance type: 2-Single instance, recurring appointment")&lt;br /&gt;                    'ElseIf InstanceTypeNodeList(i).InnerText = "3" Then&lt;br /&gt;                    '    Console.WriteLine("  Instance type: 3-Exception to a recurring appointment")&lt;br /&gt;                    'Else&lt;br /&gt;                    '    Console.WriteLine("  Instance type: Unknown")&lt;br /&gt;                    '    Console.WriteLine("")&lt;br /&gt;                    'End If&lt;br /&gt;&lt;br /&gt;                Next&lt;br /&gt;&lt;br /&gt;            Else&lt;br /&gt;                Console.WriteLine("No calendar items found ...")&lt;br /&gt;&lt;br /&gt;            End If&lt;br /&gt;&lt;br /&gt;            ' Clean up.&lt;br /&gt;            ResponseStream.Close()&lt;br /&gt;            Response.Close()&lt;br /&gt;&lt;br /&gt;        Catch ex As Exception&lt;br /&gt;&lt;br /&gt;            ' Catch any exceptions. Any error codes from the&lt;br /&gt;            ' SEARCH method requests on the server will be caught&lt;br /&gt;            ' here, also.&lt;br /&gt;            Console.WriteLine(ex.Message)&lt;br /&gt;&lt;br /&gt;        End Try&lt;br /&gt;&lt;br /&gt;        SaveTextFile("C:\test.txt", output)&lt;br /&gt;        emailCalendar()&lt;br /&gt;        Me.Close()&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Wed, 01 Aug 2007 18:29:33 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/4379</guid>
      <author>mellerbeck (Michael Ellerbeck)</author>
    </item>
    <item>
      <title>Quick and dirty email server checker, python</title>
      <link>http://snippets.dzone.com/posts/show/4024</link>
      <description>// description of your code here&lt;br /&gt;This sends an email from a gmail account with a GUID for the subject to another email account, and then writes this GUID to file. On the other end, the other half of the program checks the GUID in the recieved message and matches it to the GUID in the file to verify that the message has been recieved. I schedule the sender to run every ten minutes, and the reciever/checker to run every minute. The reciever has a threshold value of 20 so if it has checked 20 times and not recieved the email it sends an IM to my gmail account. Whew is that contrived or what.  &lt;br /&gt;&lt;code&gt;&lt;br /&gt;// First part, email sender, schedule to run every 10 minutes or so&lt;br /&gt;// this uses GUID from http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/163604&lt;br /&gt;&lt;br /&gt;from smtplib import SMTP&lt;br /&gt;from socket import sslerror         #if desired&lt;br /&gt;import Guid&lt;br /&gt;import os&lt;br /&gt;&lt;br /&gt;guidSubj = Guid.generate()&lt;br /&gt;guidBod1 = Guid.generate()&lt;br /&gt;guidBod2 = Guid.generate()&lt;br /&gt;&lt;br /&gt;if not os.path.exists("sent.txt"):   #check whether the file exists, if not create it&lt;br /&gt;    fileHandle = open('sent.txt','w')&lt;br /&gt;    fileHandle.write (guidSubj)&lt;br /&gt;    fileHandle.close()&lt;br /&gt;    server = SMTP('smtp.gmail.com',587)&lt;br /&gt;    server.set_debuglevel(1) # or 1 for verbosity&lt;br /&gt;    server.ehlo('user@gmail.com')&lt;br /&gt;    server.starttls()&lt;br /&gt;    server.ehlo('user@gmail.com')  # say hello again&lt;br /&gt;    server.login('user@gmail.com', 'password')&lt;br /&gt;    # i have a suspicion that smptlib does not add the required newline dot newline so i do it myself&lt;br /&gt;    server.sendmail('user@gmail.com', 'user@place.com', "Subject:Ping," + guidSubj + '\n\n' + guidBod1 + '\n\n' + guidBod2 + '\n.\n')&lt;br /&gt;    # next line generates the ignorable socket.sslerror&lt;br /&gt;    server.quit()&lt;br /&gt;&lt;br /&gt;// Second email checker/reciever, check every minute or so&lt;br /&gt;# This script is a helper to clean POP3 mailboxes&lt;br /&gt;# containing malformed mails that hangs MUA's, that &lt;br /&gt;# are too large, or whatever...&lt;br /&gt;#&lt;br /&gt;# It iterates over the non-retrieved mails, prints&lt;br /&gt;# selected elements from the headers and prompt the &lt;br /&gt;# user to delete bogus messages.&lt;br /&gt;#&lt;br /&gt;# Written by Xavier Defrang &lt;xavier.defrang@brutele.be&gt;&lt;br /&gt;# &lt;br /&gt;&lt;br /&gt;# &lt;br /&gt;import getpass, poplib, re, os, fileinput, sys, xmpp&lt;br /&gt;&lt;br /&gt;def sendIM(toAddress=None):&lt;br /&gt;    &lt;br /&gt;    # Google Talk constants&lt;br /&gt;    FROM_GMAIL_ID = "user@gmail.com"&lt;br /&gt;    GMAIL_PASS = "pass"&lt;br /&gt;    GTALK_SERVER = "talk.google.com"&lt;br /&gt;    TO_GMAIL_ID = "user@gmail.com"&lt;br /&gt;    jid=xmpp.protocol.JID(FROM_GMAIL_ID)&lt;br /&gt;    cl=xmpp.Client(jid.getDomain(),debug=[])&lt;br /&gt;    if not cl.connect((GTALK_SERVER,5222)):&lt;br /&gt;        raise IOError('Can not connect to server.')&lt;br /&gt;    if not cl.auth(jid.getNode(),GMAIL_PASS):&lt;br /&gt;        raise IOError('Can not auth with server.')&lt;br /&gt;&lt;br /&gt;    cl.send( xmpp.Message( TO_GMAIL_ID ,"Fix your email!" ) )&lt;br /&gt;    cl.disconnect()&lt;br /&gt;&lt;br /&gt;# Change this to your needs&lt;br /&gt;POPHOST = "131.0.0.1"&lt;br /&gt;POPUSER = "user"&lt;br /&gt;POPPASS = "pass"&lt;br /&gt;&lt;br /&gt;# How many lines of message body to retrieve&lt;br /&gt;MAXLINES = 10&lt;br /&gt;&lt;br /&gt;# Headers we're actually interrested in&lt;br /&gt;rx_headers  = re.compile(r"^(Subject)")&lt;br /&gt;&lt;br /&gt;try:&lt;br /&gt;&lt;br /&gt;    # Connect to the POPer and identify user&lt;br /&gt;    pop = poplib.POP3(POPHOST)&lt;br /&gt;    pop.user(POPUSER)&lt;br /&gt;&lt;br /&gt;    if not POPPASS:&lt;br /&gt;        # If no password was supplied, ask for it&lt;br /&gt;        POPPASS = getpass.getpass("Password for %s@%s:" % (POPUSER, POPHOST))&lt;br /&gt;&lt;br /&gt;    # Authenticate user&lt;br /&gt;    pop.pass_(POPPASS)&lt;br /&gt;&lt;br /&gt;    # Get some general informations (msg_count, box_size)&lt;br /&gt;    stat = pop.stat()&lt;br /&gt;&lt;br /&gt;    bye = 0&lt;br /&gt;    count_del = 0&lt;br /&gt;    &lt;br /&gt;    #for n in range(stat[0]):&lt;br /&gt;&lt;br /&gt;    msgnum = stat[0]&lt;br /&gt;&lt;br /&gt;    # Retrieve headers&lt;br /&gt;    response, lines, bytes = pop.top(msgnum, MAXLINES)&lt;br /&gt;&lt;br /&gt;    # Print message info and headers we're interrested in&lt;br /&gt;    test = "".join(filter(rx_headers.match, lines))&lt;br /&gt;    num = test.split(',')&lt;br /&gt;    out = num[1]&lt;br /&gt;    &lt;br /&gt;&lt;br /&gt;    #Read the sent.txt file to get the GUID&lt;br /&gt;    fileHandle = open ( 'sent.txt' )&lt;br /&gt;    sentGuid = fileHandle.readline()&lt;br /&gt;    print sentGuid&lt;br /&gt;    fileHandle.close()&lt;br /&gt;    &lt;br /&gt;    if out == sentGuid:&lt;br /&gt;        print "They match!! yay"&lt;br /&gt;        pop.dele(msgnum)&lt;br /&gt;        print "Message %d marked for deletion" % msgnum&lt;br /&gt;        count_del += 1&lt;br /&gt;        #delete the retry.txt and sent.txt file&lt;br /&gt;        os.remove("retry.txt")&lt;br /&gt;        os.remove("sent.txt")&lt;br /&gt;    else:&lt;br /&gt;&lt;br /&gt;        #There are no messages yet, so we will increment the retry value&lt;br /&gt;        if not os.path.exists("retry.txt"):&lt;br /&gt;            fileHandle = open ( 'retry.txt','a')&lt;br /&gt;            fileHandle.write('1')&lt;br /&gt;            fileHandle.close()&lt;br /&gt;        else:&lt;br /&gt;        &lt;br /&gt;        fileHandle = open("retry.txt")&lt;br /&gt;        retryValue = fileHandle.readline()&lt;br /&gt;        fileHandle.close()&lt;br /&gt;        #delete the file then recreate with new value&lt;br /&gt;        os.remove('retry.txt')&lt;br /&gt;&lt;br /&gt;        if retryValue != '':&lt;br /&gt;            retryValue = int(retryValue) + 1&lt;br /&gt;            out = str(retryValue)&lt;br /&gt;            fileHandle = open ( 'retry.txt','a')&lt;br /&gt;            fileHandle.write(out)&lt;br /&gt;            fileHandle.close()&lt;br /&gt;            if retryValue &gt; 20 and retryValue &lt;25:&lt;br /&gt;                sendIM()&lt;br /&gt;&lt;br /&gt;   # Summary&lt;br /&gt;    print "Deleting %d message(s) in mailbox %s@%s" % (count_del, POPUSER, POPHOST)&lt;br /&gt;&lt;br /&gt;    # Commit operations and disconnect from server&lt;br /&gt;    print "Closing POP3 session"&lt;br /&gt;    pop.quit()&lt;br /&gt;&lt;br /&gt;except poplib.error_proto, detail:&lt;br /&gt;&lt;br /&gt;    # Fancy error handling&lt;br /&gt;    print "POP3 Protocol Error:", detail&lt;br /&gt;&lt;br /&gt;    #There are no messages yet, so we will increment the retry value&lt;br /&gt;    if not os.path.exists("retry.txt"):&lt;br /&gt;        fileHandle = open ( 'retry.txt','a')&lt;br /&gt;        fileHandle.write('1')&lt;br /&gt;        fileHandle.close()&lt;br /&gt;    else:&lt;br /&gt;        &lt;br /&gt;        fileHandle = open("retry.txt")&lt;br /&gt;        retryValue = fileHandle.readline()&lt;br /&gt;        fileHandle.close()&lt;br /&gt;        #delete the file then recreate with new value&lt;br /&gt;        os.remove('retry.txt')&lt;br /&gt;&lt;br /&gt;        if retryValue != '':&lt;br /&gt;            retryValue = int(retryValue) + 1&lt;br /&gt;            out = str(retryValue)&lt;br /&gt;            fileHandle = open ( 'retry.txt','a')&lt;br /&gt;            fileHandle.write(out)&lt;br /&gt;            fileHandle.close()&lt;br /&gt;            if retryValue &gt; 20 and retryValue &lt;25:&lt;br /&gt;                sendIM()&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Tue, 15 May 2007 18:26:50 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/4024</guid>
      <author>mellerbeck (Michael Ellerbeck)</author>
    </item>
    <item>
      <title>How to send IM jabber message to google chat using python and xmppy</title>
      <link>http://snippets.dzone.com/posts/show/3986</link>
      <description>// From http://www.franklinmint.fm/blog/archives/000603.html&lt;br /&gt;// This works with version xmpppy-0.4.0.win32.exe from http://xmpppy.sourceforge.net/&lt;br /&gt;&lt;code&gt;&lt;br /&gt;import sys,xmpp&lt;br /&gt;&lt;br /&gt;# Google Talk constants&lt;br /&gt;FROM_GMAIL_ID = "user@gmail.com"&lt;br /&gt;GMAIL_PASS = "password"&lt;br /&gt;GTALK_SERVER = "talk.google.com"&lt;br /&gt;TO_GMAIL_ID = "user@gmail.com"&lt;br /&gt;&lt;br /&gt;jid=xmpp.protocol.JID(FROM_GMAIL_ID)&lt;br /&gt;cl=xmpp.Client(jid.getDomain(),debug=[])&lt;br /&gt;if not cl.connect((GTALK_SERVER,5222)):&lt;br /&gt;    raise IOError('Can not connect to server.')&lt;br /&gt;if not cl.auth(jid.getNode(),GMAIL_PASS):&lt;br /&gt;    raise IOError('Can not auth with server.')&lt;br /&gt;&lt;br /&gt;cl.send( xmpp.Message( "someone@gmail.com" ,"Hi" ) )&lt;br /&gt;cl.disconnect()&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Thu, 10 May 2007 21:55:22 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/3986</guid>
      <author>mellerbeck (Michael Ellerbeck)</author>
    </item>
  </channel>
</rss>
