Demonstrates use of static constructor

image_pdfimage_print

   

/*
C# Programming Tips & Techniques
by Charles Wright, Kris Jamsa

Publisher: Osborne/McGraw-Hill (December 28, 2001)
ISBN: 0072193794
*/
// SysInfo.cs -- Demonstrates use of static constructor
//
//               Compile this program with the following command line:
//                   C:>csc SysInfo.cs
//
namespace nsSysInfo
{
    using System;
    using System.Runtime.InteropServices;
    using System.Windows.Forms;
    
    public class SysInfo
    {
        static public void Main()
        {
            Console.WriteLine ("Current user is " +
                               clsSystemInfo.User);
            Console.WriteLine ("Current Time Zone is " +
                               clsSystemInfo.TZ);
            Console.WriteLine ("Current domain is " +
                               clsSystemInfo.Domain);
            Console.WriteLine ("Current Host is " +
                               clsSystemInfo.Host);
            Console.WriteLine ("Command interpreter is " + 
                               clsSystemInfo.ComSpec);
        }
    }
    class clsSystemInfo
    {
        private clsSystemInfo () {}
        [DllImport ("kernel32.dll")]
        static extern public long GetEnvironmentVariable (string name,
                                            byte [] value, long size);
        static clsSystemInfo ()
        {
            m_User = SystemInformation.UserName;
            m_Host = SystemInformation.ComputerName;
            DateTime now = DateTime.Now;
            TimeZone tz = TimeZone.CurrentTimeZone;
            m_TimeZone = tz.IsDaylightSavingTime(now)
                         ? tz.DaylightName : tz.StandardName;
            m_Domain = SystemInformation.UserDomainName;
            byte [] comspec = new byte [256];
            if (GetEnvironmentVariable ("COMSPEC", comspec, 256) > 0)
            {
                foreach (byte ch in comspec)
                {
                    if (ch == 0)
                        break;
                    m_ComSpec += (char) ch;
                }
            }
        }
        static public string User
        {
            get
            {
                return (m_User);
            }
        }
        static public string TZ
        {
            get
            {
                return (m_TimeZone);
            }
        }
        static public string Domain
        {
            get
            {
                return (m_Domain);
            }
        }
        static public string Host
        {
            get
            {
                return (m_Host);
            }
        }
        static public string ComSpec
        {
            get
            {
                return (m_ComSpec);
            }
        }
        private static string m_User;
        private static string m_TimeZone;
        private static string m_Domain;
        private static string m_Host;
        private static string m_ComSpec;
    }
}