怎样创建WinNT登录帐号? 怎样用程序的方式创建一个WinNT/XP/2k下面的登录帐号,要求这个帐号的权限和guest用户的权限相同. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 uses Windows;const SE_CREATE_TOKEN_NAME ='SeCreateTokenPrivilege'; SE_ASSIGNPRIMARYTOKEN_NAME ='SeAssignPrimaryTokenPrivilege'; SE_LOCK_MEMORY_NAME ='SeLockMemoryPrivilege'; SE_INCREASE_QUOTA_NAME ='SeIncreaseQuotaPrivilege'; SE_UNSOLICITED_INPUT_NAME ='SeUnsolicitedInputPrivilege'; SE_MACHINE_ACCOUNT_NAME ='SeMachineAccountPrivilege'; SE_TCB_NAME ='SeTcbPrivilege'; SE_SECURITY_NAME ='SeSecurityPrivilege'; SE_TAKE_OWNERSHIP_NAME ='SeTakeOwnershipPrivilege'; SE_LOAD_DRIVER_NAME ='SeLoadDriverPrivilege'; SE_SYSTEM_PROFILE_NAME ='SeSystemProfilePrivilege'; SE_SYSTEMTIME_NAME ='SeSystemtimePrivilege'; SE_PROF_SINGLE_PROCESS_NAME ='SeProfileSingleProcessPrivilege'; SE_INC_BASE_PRIORITY_NAME ='SeIncreaseBasePriorityPrivilege'; SE_CREATE_PAGEFILE_NAME ='SeCreatePagefilePrivilege'; SE_CREATE_PERMANENT_NAME ='SeCreatePermanentPrivilege'; SE_BACKUP_NAME ='SeBackupPrivilege'; SE_RESTORE_NAME ='SeRestorePrivilege'; SE_SHUTDOWN_NAME ='SeShutdownPrivilege'; SE_DEBUG_NAME ='SeDebugPrivilege'; SE_AUDIT_NAME ='SeAuditPrivilege'; SE_SYSTEM_ENVIRONMENT_NAME ='SeSystemEnvironmentPrivilege'; SE_CHANGE_NOTIFY_NAME ='SeChangeNotifyPrivilege'; SE_REMOTE_SHUTDOWN_NAME ='SeRemoteShutdownPrivilege'; USER_PRIV_MASK =$3; USER_PRIV_GUEST =0; USER_PRIV_USER =1; USER_PRIV_ADMIN =2; UF_SCRIPT =$0001; UF_ACCOUNTDISABLE =$0002; UF_HOMEDIR_REQUIRED =$0008; UF_LOCKOUT =$0010; UF_PASSWD_NOTREQD =$0020; UF_PASSWD_CANT_CHANGE =$0040;//// Account type bits as part of usri_flags.// UF_TEMP_DUPLICATE_ACCOUNT =$0100; UF_NORMAL_ACCOUNT =$0200; UF_INTERDOMAIN_TRUST_ACCOUNT =$0800; UF_WORKSTATION_TRUST_ACCOUNT =$1000; UF_SERVER_TRUST_ACCOUNT =$2000; UF_MACHINE_ACCOUNT_MASK =( UF_INTERDOMAIN_TRUST_ACCOUNT or UF_WORKSTATION_TRUST_ACCOUNT or UF_SERVER_TRUST_ACCOUNT ); UF_ACCOUNT_TYPE_MASK =( UF_TEMP_DUPLICATE_ACCOUNT or UF_NORMAL_ACCOUNT or UF_INTERDOMAIN_TRUST_ACCOUNT or UF_WORKSTATION_TRUST_ACCOUNT or UF_SERVER_TRUST_ACCOUNT ); UF_DONT_EXPIRE_PASSWD =$10000; UF_MNS_LOGON_ACCOUNT =$20000; UF_SETTABLE_BITS =( UF_SCRIPT or UF_ACCOUNTDISABLE or UF_LOCKOUT or UF_HOMEDIR_REQUIRED or UF_PASSWD_NOTREQD or UF_PASSWD_CANT_CHANGE or UF_ACCOUNT_TYPE_MASK or UF_DONT_EXPIRE_PASSWD or UF_MNS_LOGON_ACCOUNT );type _USER_INFO_1 = record usri1_name: PWideChar; usri1_password: PWideChar; usri1_password_age: Cardinal; usri1_priv: Cardinal; usri1_home_dir: PWideChar; usri1_comment: PWideChar; usri1_flags: Cardinal; usri1_script_path: PWideChar; end; _LOCALGROUP_MEMBERS_INFO_0 = record lgrmi0_sid: Cardinal; end; _LOCALGROUP_MEMBERS_INFO_3 = record lgrmi3_domainandname: PWideChar; end;function NetUserAdd(ServerName: PWideChar; Level: Cardinal; var InfoBuf; var Parm_Err: Cardinal): Integer; stdcall; external 'netapi32.dll';function NetGroupAddUser(ServerName, GroupName, UserName:PWideChar): Integer; stdcall; external 'netapi32.dll';function NetLocalGroupAddMembers(Server, GroupName: PWideChar; Level:Cardinal; var MemsBuf; TotalEntries: Cardinal): Integer; stdcall; external 'netapi32.dll';procedure AddAccount;var AToken: THandle; Priv: TTokenPrivileges; NoUse: Cardinal; UserInfo: _USER_INFO_1; Members: _LOCALGROUP_MEMBERS_INFO_3;begin OpenProcessToken(GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES, AToken); LookupPrivilegeValue(nil, SE_SHUTDOWN_NAME, Priv.Privileges[0].Luid); Priv.PrivilegeCount := 1; Priv.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED; AdjustTokenPrivileges(AToken, False, Priv, 0, nil, NoUse); FillChar(UserInfo, Sizeof(UserInfo), 0); UserInfo.usri1_name := 'test'; UserInfo.usri1_password := 'test'; UserInfo.usri1_password_age := 0; UserInfo.usri1_priv := USER_PRIV_User; UserInfo.usri1_comment := 'Test User'; UserInfo.usri1_flags := UF_DONT_EXPIRE_PASSWD; NetUserAdd(nil, 1, UserInfo, NoUse); Members.lgrmi3_domainandname := 'System '; NetLocalGroupAddMembers(nil, 'Guests', 3, Members, 1);end;//当前用户必须有创建账号的权限。 刚才倒数第二行应该是:Members.lgrmi3_domainandname := 'test'; 求助:.tar的压缩文件在windows系统下应该怎样解压? 请问怎样在fastreport中隐藏-1?参与就有分奖励 着急啊,如何将DBGRID中的一列的值复制到另外一列 mscomm 可以将sql语句中表的字段设为变量,在sql语句外部赋值? 菜鸟请教 请教改文件属性的API函数(只读,系统,隐藏) 如何制作delphi6的打包程序 如何将TADOTable控件的GetRows返回值显示出来 求救!!!简单的问题:STRINGGRID中怎样改变某一列的背景色???? 如何用DELPHI修改注册表,使程序随WIN系统启动而启动! 在使用Table要用户名与密码?
Windows;const
SE_CREATE_TOKEN_NAME ='SeCreateTokenPrivilege';
SE_ASSIGNPRIMARYTOKEN_NAME ='SeAssignPrimaryTokenPrivilege';
SE_LOCK_MEMORY_NAME ='SeLockMemoryPrivilege';
SE_INCREASE_QUOTA_NAME ='SeIncreaseQuotaPrivilege';
SE_UNSOLICITED_INPUT_NAME ='SeUnsolicitedInputPrivilege';
SE_MACHINE_ACCOUNT_NAME ='SeMachineAccountPrivilege';
SE_TCB_NAME ='SeTcbPrivilege';
SE_SECURITY_NAME ='SeSecurityPrivilege';
SE_TAKE_OWNERSHIP_NAME ='SeTakeOwnershipPrivilege';
SE_LOAD_DRIVER_NAME ='SeLoadDriverPrivilege';
SE_SYSTEM_PROFILE_NAME ='SeSystemProfilePrivilege';
SE_SYSTEMTIME_NAME ='SeSystemtimePrivilege';
SE_PROF_SINGLE_PROCESS_NAME ='SeProfileSingleProcessPrivilege';
SE_INC_BASE_PRIORITY_NAME ='SeIncreaseBasePriorityPrivilege';
SE_CREATE_PAGEFILE_NAME ='SeCreatePagefilePrivilege';
SE_CREATE_PERMANENT_NAME ='SeCreatePermanentPrivilege';
SE_BACKUP_NAME ='SeBackupPrivilege';
SE_RESTORE_NAME ='SeRestorePrivilege';
SE_SHUTDOWN_NAME ='SeShutdownPrivilege';
SE_DEBUG_NAME ='SeDebugPrivilege';
SE_AUDIT_NAME ='SeAuditPrivilege';
SE_SYSTEM_ENVIRONMENT_NAME ='SeSystemEnvironmentPrivilege';
SE_CHANGE_NOTIFY_NAME ='SeChangeNotifyPrivilege';
SE_REMOTE_SHUTDOWN_NAME ='SeRemoteShutdownPrivilege'; USER_PRIV_MASK =$3;
USER_PRIV_GUEST =0;
USER_PRIV_USER =1;
USER_PRIV_ADMIN =2; UF_SCRIPT =$0001;
UF_ACCOUNTDISABLE =$0002;
UF_HOMEDIR_REQUIRED =$0008;
UF_LOCKOUT =$0010;
UF_PASSWD_NOTREQD =$0020;
UF_PASSWD_CANT_CHANGE =$0040;//
// Account type bits as part of usri_flags.
// UF_TEMP_DUPLICATE_ACCOUNT =$0100;
UF_NORMAL_ACCOUNT =$0200;
UF_INTERDOMAIN_TRUST_ACCOUNT =$0800;
UF_WORKSTATION_TRUST_ACCOUNT =$1000;
UF_SERVER_TRUST_ACCOUNT =$2000; UF_MACHINE_ACCOUNT_MASK =( UF_INTERDOMAIN_TRUST_ACCOUNT or
UF_WORKSTATION_TRUST_ACCOUNT or
UF_SERVER_TRUST_ACCOUNT ); UF_ACCOUNT_TYPE_MASK =(
UF_TEMP_DUPLICATE_ACCOUNT or
UF_NORMAL_ACCOUNT or
UF_INTERDOMAIN_TRUST_ACCOUNT or
UF_WORKSTATION_TRUST_ACCOUNT or
UF_SERVER_TRUST_ACCOUNT
); UF_DONT_EXPIRE_PASSWD =$10000;
UF_MNS_LOGON_ACCOUNT =$20000;
UF_SETTABLE_BITS =(
UF_SCRIPT or
UF_ACCOUNTDISABLE or
UF_LOCKOUT or
UF_HOMEDIR_REQUIRED or
UF_PASSWD_NOTREQD or
UF_PASSWD_CANT_CHANGE or
UF_ACCOUNT_TYPE_MASK or
UF_DONT_EXPIRE_PASSWD or
UF_MNS_LOGON_ACCOUNT
);
type
_USER_INFO_1 = record
usri1_name: PWideChar;
usri1_password: PWideChar;
usri1_password_age: Cardinal;
usri1_priv: Cardinal;
usri1_home_dir: PWideChar;
usri1_comment: PWideChar;
usri1_flags: Cardinal;
usri1_script_path: PWideChar;
end; _LOCALGROUP_MEMBERS_INFO_0 = record
lgrmi0_sid: Cardinal;
end;
_LOCALGROUP_MEMBERS_INFO_3 = record
lgrmi3_domainandname: PWideChar;
end;function NetUserAdd(ServerName: PWideChar; Level: Cardinal;
var InfoBuf; var Parm_Err: Cardinal): Integer; stdcall; external 'netapi32.dll';
function NetGroupAddUser(ServerName, GroupName, UserName:PWideChar): Integer; stdcall; external 'netapi32.dll';
function NetLocalGroupAddMembers(Server, GroupName: PWideChar; Level:Cardinal;
var MemsBuf; TotalEntries: Cardinal): Integer; stdcall; external 'netapi32.dll';
procedure AddAccount;
var
AToken: THandle;
Priv: TTokenPrivileges;
NoUse: Cardinal;
UserInfo: _USER_INFO_1;
Members: _LOCALGROUP_MEMBERS_INFO_3;
begin
OpenProcessToken(GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES, AToken);
LookupPrivilegeValue(nil, SE_SHUTDOWN_NAME, Priv.Privileges[0].Luid);
Priv.PrivilegeCount := 1;
Priv.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(AToken, False, Priv, 0, nil, NoUse);
FillChar(UserInfo, Sizeof(UserInfo), 0);
UserInfo.usri1_name := 'test';
UserInfo.usri1_password := 'test';
UserInfo.usri1_password_age := 0;
UserInfo.usri1_priv := USER_PRIV_User;
UserInfo.usri1_comment := 'Test User';
UserInfo.usri1_flags := UF_DONT_EXPIRE_PASSWD;
NetUserAdd(nil, 1, UserInfo, NoUse);
Members.lgrmi3_domainandname := 'System ';
NetLocalGroupAddMembers(nil, 'Guests', 3, Members, 1);
end;//当前用户必须有创建账号的权限。
Members.lgrmi3_domainandname := 'test';