public static extern int NetUserAdd(string servername, UInt32 level, Structs.USER_INFO_2 userInfo, out UInt32 parm_err);
public static void CreateUser(String username) { //https://stackoverflow.com/questions/1100926/pinvoke-of-netuseradd-returns-24 Structs.USER_INFO_2 userInfo2 = new Structs.USER_INFO_2() { acct_expires = long.MaxValue, auth_flags = 0, // Must be 0 for NetUserAddCalls bad_pw_count = -1, //ignored for NetUserAdd calls //code_page = ?, comment = "H4x0r Account", //country_code = ?, flags = 0x10000,// & UF_ACCOUNTDISABLE, full_name = "h4x0r", home_dir = "", last_logoff = 0, last_logon = 0, logon_hours = IntPtr.Zero, // User is given no logon time. logon_server = "", //ignored for NetUserAdd calls max_storage = 0, name = username, num_logons = -1, //ignored for NetUserAdd calls parms = "", password = "******", password_age = -1, priv = 1, script_path = "", units_per_week = -1, //ignored for NetUserAdd calls usr_comment = "", workstations = "" }; uint output; int result = WinAPI.NetUserAdd(null, 2, userInfo2, out output); if (result == 0) { Console.WriteLine("Successfully created local user"); } else { Console.WriteLine("Could not create user"); } //#TODO Look addmin group with LookupAccountSid: https://www.pinvoke.net/default.aspx/netapi32.netlocalgroupaddmembers Structs.LOCALGROUP_MEMBERS_INFO_3 info; info.Domain = username; int result2 = WinAPI.NetLocalGroupAddMembers(null, "Administrators", 3, ref info, 1); if (result2 == 0) { Console.WriteLine("Successfully added created user to the Administrators group"); } if (result == 0) { int result3 = WinAPI.NetUserDel(null, username); if (result3 == 0) { Console.WriteLine("Successfully removed user"); } else { Console.WriteLine("Could not delete user"); Console.WriteLine(result3); } } }
public static void CreateUserApi(String username, Lib.Logger logger, bool cleanup) { //https://stackoverflow.com/questions/1100926/pinvoke-of-netuseradd-returns-24 Structs.USER_INFO_2 userInfo2 = new Structs.USER_INFO_2() { acct_expires = long.MaxValue, auth_flags = 0, // Must be 0 for NetUserAddCalls bad_pw_count = -1, //ignored for NetUserAdd calls //code_page = ?, comment = "H4x0r Account", //country_code = ?, flags = 0x10000,// & UF_ACCOUNTDISABLE, full_name = "h4x0r", home_dir = "", last_logoff = 0, last_logon = 0, logon_hours = IntPtr.Zero, // User is given no logon time. logon_server = "", //ignored for NetUserAdd calls max_storage = 0, name = username, num_logons = -1, //ignored for NetUserAdd calls parms = "", password = "******", password_age = -1, priv = 1, script_path = "", units_per_week = -1, //ignored for NetUserAdd calls usr_comment = "", workstations = "" }; uint output; int result = WinAPI.NetUserAdd(null, 2, userInfo2, out output); if (result == 0) { logger.TimestampInfo(String.Format("Successfully created local user {0} with NetUserAdd", username)); if (cleanup) { int delresult = WinAPI.NetUserDel(null, username); if (delresult == 0) { logger.TimestampInfo(String.Format("Successfully removed user with NetUserDel", username)); } else { logger.TimestampInfo("Could not delete created user"); } } else { logger.TimestampInfo(String.Format("The created local user {0} was not deleted as part of the simulation", username)); } } else { throw new Exception(String.Format("Could not create local user {0}. Error code: {1} ", username, result.ToString())); } //#TODO Look addmin group with LookupAccountSid: https://www.pinvoke.net/default.aspx/netapi32.netlocalgroupaddmembers /* * Structs.LOCALGROUP_MEMBERS_INFO_3 info; * info.Domain = username; * int result2 = WinAPI.NetLocalGroupAddMembers(null, "Administrators", 3, ref info, 1); * if (result2 == 0) * { * //Console.WriteLine("Successfully added created user to the Administrators group"); * logger.TimestampInfo("Successfully added created user to the Administrators group"); * } */ System.Threading.Thread.Sleep(4000); /* * // if the user was created and cleanup parameter is true * if (result == 0 && cleanup) * { * int delresult = WinAPI.NetUserDel(null, username); * if (delresult == 0) * { * logger.TimestampInfo(String.Format("Successfully removed user with NetUserDel", username)); * * } * else * { * logger.TimestampInfo("Could not delete created user"); * } * } * else if (result == 0 && !cleanup) * { * logger.TimestampInfo(String.Format("The created local user {0} was not deleted as part of the simulation", username)); * } */ }