/* 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; } }