/* C# Programming Tips & Techniques by Charles Wright, Kris Jamsa Publisher: Osborne/McGraw-Hill (December 28, 2001) ISBN: 0072193794 */ // // GetUser.cs -- demonstratec compound modifiers and calls to external API // // Compile this program with the following command line: // C:>csc /unsafe GetUser.cs // namespace nsUser { using System; using System.Runtime.InteropServices; public class GetUser { [DllImport ("user32.dll")] static extern public int MessageBox(int hWnd, string msg, string title, int type); [DllImport ("advapi32.dll")] static unsafe extern public bool GetUserName(byte [] User, long *size); [DllImport ("advapi32.dll")] static unsafe extern public bool GetUserNameW(char [] User, long *size); static public void Main () { byte [] user = new byte[256]; long size = (long) user.Length; unsafe { if (GetUserName (user, &size) == false) Console.WriteLine ("Error getting user name"); } string strUser = ""; foreach (byte ch in user) { if (ch == 0) break; strUser += (char) ch; } MessageBox (0, "The current user is " + strUser, "Howdy", 0); /* //******************************************** // The following code uses the wide-character version GetUserNameW() // strUser = ""; char [] cUser = new char[256]; size = cUser.Length; unsafe { if (GetUserNameW (cUser, &size) == false) Console.WriteLine ("Error getting user name"); } foreach (char ch in user) { if (ch == 0) break; strUser += ch; } MessageBox (0, "The current user is " + strUser, "Howdy", 0); */ } } }