\
Tips and Tricks
User Creation
The following shows how you can create a local user:
;--- Hard coded here but could be properties etc ----------------------------
#define USER_USERID TestUser
#define USER_PASSWORD SomePassword
#define USER_FULLNAME Account required for testing
#define USER_DESCRIPTION Created by <$ProdInfo.ProductName> version <$ProductVersion>
;--- The custom action ------------------------------------------------------
<$VbsCa Binary="CreateLocalUserAccount.VBS">
;--- Initialization ------------------------------------------------------
const ADS_UF_SCRIPT = &H000001
const ADS_UF_ACCOUNTDISABLE = &H000002
const ADS_UF_HOMEDIR_REQUIRED = &H000008
const ADS_UF_LOCKOUT = &H000010
const ADS_UF_PASSWD_NOTREQD = &H000020
const ADS_UF_PASSWD_CANT_CHANGE = &H000040
const ADS_UF_ENCRYPTED_TEXT_PASSWORD_ALLOWED = &H000080
const ADS_UF_TEMP_DUPLICATE_ACCOUNT = &H000100
const ADS_UF_NORMAL_ACCOUNT = &H000200
const ADS_UF_INTERDOMAIN_TRUST_ACCOUNT = &H000800
const ADS_UF_WORKSTATION_TRUST_ACCOUNT = &H001000
const ADS_UF_SERVER_TRUST_ACCOUNT = &H002000
const ADS_UF_DONT_EXPIRE_PASSWD = &H010000
const ADS_UF_MNS_LOGON_ACCOUNT = &H020000
const ADS_UF_SMARTCARD_REQUIRED = &H040000
const ADS_UF_TRUSTED_FOR_DELEGATION = &H080000
const ADS_UF_NOT_DELEGATED = &H100000
const ADS_UF_USE_DES_KEY_ONLY = &H200000
const ADS_UF_DONT_REQUIRE_PREAUTH = &H400000
const ADS_UF_PASSWORD_EXPIRED = &H800000
const ADS_UF_TRUSTED_TO_AUTHENTICATE_FOR_DELEGATION = &H100000
dim oDomain
;--- CREATE USER (Custom Action Entry point) -----------------------------
<$VbsCaEntry "UserCreate">
;--- Get object to local computer ------------------------------------
GetDomainObject()
;--- Make sure the user doesn't already exist! -----------------------
DeleteUserIgnoreErrors()
;--- Create a new user -----------------------------------------------
dim oUser, UserFlags
CaDebug 0, "Creating user: <$USER_USERID>."
set oUser = oDomain.Create("user", "<$USER_USERID>")
;--- Basic properties --------------------------------------------
oUser.put "FullName" , "<$USER_FULLNAME>"
oUser.put "Description", "<$USER_DESCRIPTION>"
oUser.SetPassword "<$USER_PASSWORD>"
;--- User attributes ---------------------------------------------
oUser.SetInfo 'Required!
UserFlags = oUser.Get("UserFlags")
CaDebug 0, "User Flags BEFORE = 0x" & hex(UserFlags)
UserFlags = UserFlags or ADS_UF_DONT_EXPIRE_PASSWD or ADS_UF_PASSWD_CANT_CHANGE
oUser.Put "UserFlags", UserFlags
CaDebug 0, "User Flags AFTER = 0x" & hex(UserFlags)
oUser.SetInfo
<$/VbsCaEntry>
;--- DELETE USER (Custom Action Entry point) -----------------------------
<$VbsCaEntry "UserDelete">
;--- Get object to local computer ------------------------------------
GetDomainObject()
;--- Make sure the user doesn't already exist! -----------------------
DeleteUserIgnoreErrors()
<$/VbsCaEntry>
<?NewLine>
'===========================================
sub GetDomainObject()
'===========================================
;--- Create object to local box --------------------------------------
dim Where : Where = "WinNT://" & VbsCaPropertyGet("ComputerName", "<??*COMPUTERNAME>", "")
CaDebug 0, "Getting object: " & Where
set oDomain = GetObject(Where)
end sub
<?NewLine>
'===========================================
sub DeleteUserIgnoreErrors()
'===========================================
on error resume next
CaDebug 0, "Deleting user: <$USER_USERID>"
oDomain.Delete "user", "<$USER_USERID>"
CaDebug 0, " RC : " & err.number & " - " & err.description
end sub
<$/VbsCa>
<$VbsCaSetup Type="IMMEDIATE" Binary="CreateLocalUserAccount.VBS" Entry="UserCreate" Seq="<-CreateFolders" CONDITION=^<$CONDITION_EXCEPT_UNINSTALL>^>