全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:2080
推到 Plurk!
推到 Facebook!

使用DELPHI如何重設WINDOWS用戶

答題得分者是:sadnui
light_he
一般會員


發表:3
回覆:6
積分:1
註冊:2008-08-30

發送簡訊給我
#1 引用回覆 回覆 發表時間:2008-08-30 11:42:00 IP:59.37.xxx.xxx 訂閱
各位:

請問使用DELPHI如何重設WINDOWS用戶的密碼,我找到的資料是NetUserChangePassword可以修改用戶密碼,但是需要輸入舊密碼,因我有管理員許可權,希望重設密碼而不是修改密碼,請問如何可以做到,最好帶有範例,謝謝
sadnui
一般會員


發表:0
回覆:5
積分:6
註冊:2008-08-23

發送簡訊給我
#2 引用回覆 回覆 發表時間:2008-09-01 10:51:44 IP:58.50.xxx.xxx 訂閱
var user,pass:string; begin user:='admin'; pass:='123456'; WinExec(pchar('cmd /c net user ' user ' ' pass),0); end;
------
light_he
一般會員


發表:3
回覆:6
積分:1
註冊:2008-08-30

發送簡訊給我
#3 引用回覆 回覆 發表時間:2008-09-01 13:33:48 IP:59.37.xxx.xxx 訂閱
請問: 此功能一定需要調用net嗎?Delphi本身可不可以做到,因為有些電腦的net程式可能會丟掉,最好不要因為系統環而影響到程式的執行結果
還請幫忙想想有無其他方法,謝謝.
sadnui
一般會員


發表:0
回覆:5
積分:6
註冊:2008-08-23

發送簡訊給我
#4 引用回覆 回覆 發表時間:2008-09-02 09:41:31 IP:58.50.xxx.xxx 訂閱
net1 命令也是一样的
这类程序一般不会太容易丢失的 放心好了
至于api也是可以实现\不过程式不在这里\如果需要的话我可以给你mail
------
light_he
一般會員


發表:3
回覆:6
積分:1
註冊:2008-08-30

發送簡訊給我
#5 引用回覆 回覆 發表時間:2008-09-02 10:08:56 IP:59.37.xxx.xxx 訂閱
謝謝sadnui:

因我現時的環境有部分PC的NET程式就是被刪除了,因此還請發送相關API,謝謝
我的EMAIL:
light.he@gmail.com

非常感謝
pceyes
尊榮會員


發表:70
回覆:657
積分:1140
註冊:2003-03-13

發送簡訊給我
#6 引用回覆 回覆 發表時間:2008-09-02 12:11:54 IP:220.141.xxx.xxx 訂閱
NetUserChangePassword
因為要OldPass,依你需求就不要用了。

改用
NetUserDel
刪掉(舊的使用者)
NetUserAdd 重建(舊的使用者)


參考這篇
http://topic.csdn.net/t/20030114/08/1355696.html
NetUserAdd的疑问
------
努力會更接近成功
編輯記錄
pceyes 重新編輯於 2008-09-02 12:12:36, 註解 無‧
light_he
一般會員


發表:3
回覆:6
積分:1
註冊:2008-08-30

發送簡訊給我
#7 引用回覆 回覆 發表時間:2008-09-03 15:07:37 IP:59.37.xxx.xxx 訂閱
有些内置帐号是不可以删除的.所以先删除再建立是不可行的. NetUserSetInfo可以直接修改密码,但MSDN上的代码不是DELPHI的,哪位可以帮忙转成DELPHI的代码,感谢.

NET_API_STATUS NetUserSetInfo( LPCWSTR servername, LPCWSTR username, DWORD level, LPBYTE buf, LPDWORD parm_err ); #include #include #include #pragma comment(lib,"netapi32.lib") int wmain(int argc, wchar_t *argv[]) { DWORD dwLevel = 1003; USER_INFO_1003 ui_1003; NET_API_STATUS nStatus; LPWSTR wNewPassword; LPWSTR wComputerName; LPWSTR wUserName; if (argc != 3) { fwprintf(stderr, L"Usage: %s UserName NewPassword\n", argv[0]); return 0; } wComputerName=NULL; wUserName=argv[1]; wNewPassword=argv[2]; ui_1003.usri1003_password=wNewPassword; nStatus = NetUserSetInfo(wComputerName,wUserName,dwLevel,(LPBYTE)&ui_1003,NULL); if (nStatus == NERR_Success) fwprintf(stderr, L"%s's password has been changed\n", argv[1]); else fprintf(stderr, "A system error has occurred: %d\n", nStatus); return 0; }
sadnui
一般會員


發表:0
回覆:5
積分:6
註冊:2008-08-23

發送簡訊給我
#8 引用回覆 回覆 發表時間:2008-09-03 17:11:25 IP:58.50.xxx.xxx 訂閱
function NetUserSetInfo(Servername:PWideChar;Username:pWidechar;Level:DWORD;Buf:pointer;ParmError:dword):LongInt;stdcall; external 'netapi32.dll';
type
NET_API_STATUS = DWORD;
USER_INFO_1003 = Record
usri1003_password : PWideChar;
End;
procedure TForm1.Button1Click(Sender: TObject);
var
dwLevel:DWORD;
ui_1003 : USER_INFO_1003;
nStatus:NET_API_STATUS ;
wNewPassword, wComputerName, wUserName :LPWSTR;
begin
dwLevel:= 1003;
wComputerName:=nil;
wUserName:='11111';
wNewPassword:='00000';
ui_1003.usri1003_password:=wNewPassword;
nStatus := NetUserSetInfo(wComputerName,wUserName,dwLevel,@(ui_1003),0);
end;


// 我的代码没找到\ 只能帮你翻译一下你的代码 经测试可以修改 administrator 下用户密码 请测试一下
------
pceyes
尊榮會員


發表:70
回覆:657
積分:1140
註冊:2003-03-13

發送簡訊給我
#9 引用回覆 回覆 發表時間:2008-09-03 17:38:45 IP:220.141.xxx.xxx 訂閱
晚了一步, 我也試出來了.
http://topic.csdn.net/t/20020917/14/1030497.html
如何使用程序设置win2000中的用户名跟密码?

YourUserName
';
usri1_password :='YouUserName',1,buf,@error);
memo1.lines.Add(format('NetUserSetInfo %d, %d',[i,error]));
memo1.lines.Add(inttostr(GetLastError));
freemem(buf);
end;

end.
------
努力會更接近成功
編輯記錄
pceyes 重新編輯於 2008-09-03 17:39:58, 註解 無‧
pceyes 重新編輯於 2008-09-03 17:43:27, 註解 無‧
pceyes 重新編輯於 2008-09-03 17:45:39, 註解 無‧
light_he
一般會員


發表:3
回覆:6
積分:1
註冊:2008-08-30

發送簡訊給我
#10 引用回覆 回覆 發表時間:2008-09-04 08:47:17 IP:59.37.xxx.xxx 訂閱
經測試己經OK,代碼如下:
感謝
sadnui,pceyes 的幫助。


uses
SysUtils,WINDOWS;

function NetUserSetInfo(Servername:PWideChar;Username:pWidechar;Level:DWORD;Buf:pointer;ParmError:dword):LongInt;stdcall; external 'netapi32.dll';
type
NET_API_STATUS = DWORD;
USER_INFO_1003 = Record
usri1003_password : PWideChar;
End;

var
dwLevel:DWORD;
ui_1003 : USER_INFO_1003;
wNewPassword, wComputerName, wUserName :LPWSTR;
begin
dwLevel:= 1003;
wComputerName:=nil;
wUserName:='administrator';
wNewPassword:='111111';
ui_1003.usri1003_password:=wNewPassword;
NetUserSetInfo(wComputerName,wUserName,dwLevel,@(ui_1003),0);
end.

Arnor
一般會員


發表:28
回覆:29
積分:16
註冊:2006-10-28

發送簡訊給我
#11 引用回覆 回覆 發表時間:2010-03-18 10:26:37 IP:122.116.xxx.xxx 未訂閱
請問這程序可以應用在 2003 SP2 以上的 AD 網域控制台嗎?
系統時間:2024-05-17 3:09:10
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!