2010-03-15 41 views
3

創建的Windows用戶,我需要用Delphi採用Delphi

感謝

+0

或命令行實用工具,可以做到這一點 由於使用net用戶 – Wel 2010-03-15 01:21:01

+0

解決,但如果有任何其他解決方案PLZ發佈 感謝 – Wel 2010-03-15 01:50:17

回答

10

您可以使用JEDI Headers中聲明的NetUserAddNetUserSetGroups函數。

看到這個簡單的例子。

program ProjectAddNewUser; 

{$APPTYPE CONSOLE} 

uses 
    JclWin32,//Jedi Library 
    Windows, 
    SysUtils; 


function CreateWinUser(const wServer, wUsername, wPassword, wGroup:WideString): Boolean; 
var 
    Buf  : USER_INFO_2;//Buf for the new user info 
    Err  : NET_API_STATUS; 
    ParmErr : DWORD; 
    GrpUsrInfo: USER_INFO_0;//Buf for the group 
    wDummyStr : WideString; 
begin 
    wDummyStr:=''; 
    FillChar (Buf, SizeOf(USER_INFO_2), 0); 
    with Buf do 
    begin 
    usri2_name  := PWideChar(wUsername); 
    usri2_full_name := PWideChar(wUsername);//You can add a more descriptive name here 
    usri2_password := PWideChar(wPassword); 
    usri2_comment := PWideChar(wDummyStr); 
    usri2_priv  := USER_PRIV_USER; 
    usri2_flags  := UF_SCRIPT OR UF_DONT_EXPIRE_PASSWD; 
    usri2_script_path := PWideChar(wDummyStr); 
    usri2_home_dir := PWideChar(wDummyStr); 
    usri2_acct_expires:= TIMEQ_FOREVER; 
    end; 

    GrpUsrInfo.usri0_name:=PWideChar(wGroup); 

    Err := NetUserAdd(PWideChar(wServer), 1, @Buf, @ParmErr); 
    Result := (Err = NERR_SUCCESS); 

    if Result then //NOw you must set the group for the new user 
    begin 
    Err := NetUserSetGroups(PWideChar(wServer),PWideChar(wGroup),0,@GrpUsrInfo,1); 
    Result := (Err = NERR_SUCCESS); 
    end; 
end; 

begin 

    if CreateWinUser('localhost', 'MyNewUser','ThePassword','MyWindowsGroup') then 
    Writeln('Ok') 
    else 
    Writeln('False'); 

    Readln; 
end. 
+0

非常感謝我的朋友 – Wel 2010-03-15 19:25:34

+0

@RRUZ:我試着這個代碼,但它在NetUserSetGroups上出現錯誤2220(組名無法找到)失敗。我正嘗試使用「管理員」組創建用戶。 – 2012-11-07 12:12:09

+0

爲了使它與本地'Administrators'組一起工作,我必須更改三行代碼。 'GrpUserInfo:USER_INFO_0'成爲'LOCALGROUP_MEMBERS_INFO_3'。 'GrpUserInfo.usri0_name:= PWideChar(wGroup)'變成'GrpUsrInfo.lgrmi3_domainandname:= PWideChar(wUsername)'。和'Err:= NetUserSetGroups(PWideChar(wServer),PWideChar(wGroup),0,@ GrpUsrInfo,1)'成爲'Err:= NetLocalGroupAddMembers(PWideChar(wServer),PWideChar(wGroup),3,@GrpUsrInfo,1)' 。 – 2014-03-23 08:30:32

1

創建新的Windows用戶以管理員身份我覺得API調用你需要的是NetUserAdd

首先,檢查Delphi是否爲此調用提供包裝。如果沒有,你必須自己寫。如果您不知道如何使用Delphi進行Windows API調用,那麼您需要做更多的研究。

+0

+1,我找不到它。我有一種感覺,德爾福可以直接調用這些函數,假設它們符合正確的調用約定...就像我不知道。 – 2010-03-15 01:35:25