diff -rub samba-3.0.22/source/utils/net_rpc.c samba-3.0.22-jmk/source/utils/net_rpc.c
--- samba-3.0.22/source/utils/net_rpc.c	2006-01-24 17:46:40.000000000 -0600
+++ samba-3.0.22-jmk/source/utils/net_rpc.c	2006-10-25 11:04:49.000000000 -0500
@@ -568,13 +568,22 @@
 	uint16 acb_info;
 	uint32 unknown, user_rid;
 
-	if (argc != 1) {
-		d_printf("User must be specified\n");
+	/* jmk/pmonkey mods to fix ability to set password */
+	SAM_USERINFO_CTR ctr;
+  SAM_USER_INFO_24 p24;
+  SAM_USER_INFO_16 p16;
+	const char *acct_password;
+	uchar pwbuf[516];
+
+	if (argc != 2) {
+		d_printf("User and password must be specified\n");
 		rpc_user_usage(argc, argv);
 		return NT_STATUS_OK;
 	}
 
 	acct_name = argv[0];
+	acct_password = argv[1];
+	/* jmk */
 
 	/* Get sam policy handle */
 	
@@ -605,6 +614,53 @@
 		goto done;
 	}
 
+	/* jmk/pmonkey -- mod to set a password on the new account and enable the account */
+	/* stolen 100% from the machine account joining code */
+
+	/* Open handle on user */
+
+  rpccli_samr_open_user(pipe_hnd, mem_ctx, &domain_pol,
+				SEC_RIGHTS_MAXIMUM_ALLOWED, user_rid, &user_pol);
+
+  /* Set password on account */
+  encode_pw_buffer(pwbuf, acct_password, STR_UNICODE);
+
+  ZERO_STRUCT(ctr);
+  ZERO_STRUCT(p24);
+
+  init_sam_user_info24(&p24, (char *)pwbuf,24);
+
+  ctr.switch_value = 24;
+  ctr.info.id24 = &p24;
+
+  rpccli_samr_set_userinfo(pipe_hnd, mem_ctx, &user_pol, 24,
+													&cli->user_session_key, &ctr);
+
+  /* Why do we have to try to (re-)set the ACB to be the same as what
+     we passed in the samr_create_dom_user() call?  When a NT
+     workstation is joined to a domain by an administrator the
+     acb_info is set to 0x80.  For a normal user with "Add
+     workstations to the domain" rights the acb_info is 0x84.  I'm
+     not sure whether it is supposed to make a difference or not.  NT
+     seems to cope with either value so don't bomb out if the set
+     userinfo2 level 0x10 fails.  -tpot */
+
+  ZERO_STRUCT(ctr);
+  ctr.switch_value = 16;
+  ctr.info.id16 = &p16;
+
+  init_sam_user_info16(&p16, acb_info);
+
+  /* Ignoring the return value is necessary for joining a domain
+     as a normal user with "Add workstation to domain" privilege. */
+
+  result = rpccli_samr_set_userinfo2(pipe_hnd, mem_ctx, &user_pol, 16,
+          &cli->user_session_key, &ctr);
+
+  rpccli_samr_close(pipe_hnd, mem_ctx, &user_pol);
+  //cli_rpc_pipe_close(pipe_hnd); /* Done with this pipe */
+	/* jmk */
+
  done:
 	if (!NT_STATUS_IS_OK(result)) {
 		d_fprintf(stderr, "Failed to add user %s - %s\n", acct_name, 
