Làm th? nào đ? thay đ?i m?t kh?u Windows 2000 c?a ngư?i dùng thông qua LDAP

D?ch tiêu đ? D?ch tiêu đ?
ID c?a bài: 269190 - Xem s?n ph?m mà bài này áp d?ng vào.
Chú ?
Bài vi?t này áp d?ng cho Windows 2000. H? tr? cho Windows 2000 k?t thúc vào ngày 13 tháng 7 năm 2010. Các Trung tâm gi?i pháp k?t thúc h? tr? Windows 2000 là m?t đi?m kh?i đ?u đ? l?p k? ho?ch chi?n lư?c c?a b?n di chuy?n t? Windows 2000. Đ? bi?t thêm thông tin xem các Chính sách v?ng đ?i h? tr? c?a Microsoft.
Bung t?t c? | Thu g?n t?t c?

TÓM T?T

B?n có th? thi?t l?p m?t ngư?i dùng Windows 2000 m?t kh?u thông qua các Lightweight Directory Access Protocol (LDAP) đư?c h?n ch? nh?t đ?nh. Bài vi?t này mô t? làm th? nào đ? đ?t ho?c thay đ?i các thu?c tính m?t kh?u.

THÔNG TIN THÊM

M?t kh?u đư?c lưu tr? trong thư m?c ho?t đ?ng trên m?t đ?i tư?ng ngư?i s? d?ng trong các unicodePwd thu?c tính. Thu?c tính này có th? đư?c ghi trong đi?u ki?n b? gi?i h?n, nhưng nó không th? đ?c đư?c. Các thu?c tính ch? có th? s?a đ?i; nó không th? đư?c thêm vào sáng t?o đ?i tư?ng ho?c truy v?n b?i m?t t?m ki?m. Đ? s?a đ?i các thu?c tính này, khách hàng ph?i có m?t 128-bit Secure Socket Layer (SSL) k?t n?i t?i h? ph?c v?. Cho k?t n?i này có th?, h? ph?c v? ph?i có m?t ch?ng ch? máy ch? k?t n?i 128-bit RSA, khách hàng ph?i tin tư?ng authority gi?y ch?ng nh?n (CA) mà t?o ra ch?ng ch? máy ch? và máy khách và h? ph?c v? ph?i đư?c có kh? năng m? hóa 128-bit.

Cú pháp c?a các unicodePwd thu?c tính là octet-chu?i; Tuy nhiên, các d?ch v? thư m?c s? octet-chu?i s? ch?a m?t chu?i UNICODE (như tên g?i c?a các thu?c tính cho bi?t). Này có ngh?a là b?t k? giá tr? cho thu?c tính này thông qua t?i LDAP ph?i là UNICODE dây đư?c m? hóa BER (cơ b?n m? hóa quy) như m?t octet-chu?i. Ngoài ra, chu?i UNICODE ph?i b?t đ?u và k?t thúc trong d?u ngo?c kép không ph?i là m?t ph?n c?a m?t kh?u mong mu?n.

Có hai cách có th? đ? s?a đ?i các unicodePwd thu?c tính. Đ?u tiên là tương t? như m?t b?nh thư?ng "ngư?i dùng thay đ?i m?t kh?u" chi?n d?ch. Trong trư?ng h?p này, yêu c?u s?a đ?i ph?i ch?a m?t xóa và m?t ho?t đ?ng thêm. Thao tác xóa ph?i có m?t kh?u hi?n th?i v?i d?u ngo?c kép quanh nó. Chi?n d?ch thêm ph?i có mong mu?n m?t kh?u m?i v?i d?u ngo?c kép quanh nó.

Cách th? hai đ? s?a đ?i các thu?c tính này là tương t? như ngư?i qu?n tr? đ?t l?i m?t kh?u cho ngư?i dùng. Đ? th?c hi?n vi?c này, khách hàng ph?i ràng bu?c như m?t ngư?i s? d?ng v?i đ? quy?n đ? thay đ?i m?t kh?u c?a ngư?i dùng khác. Yêu c?u s?a đ?i này nên ch?a m?t ho?t đ?ng đơn l? thay th? v?i mong mu?n m?t kh?u m?i bao quanh b?i các d?u ngo?c kép. N?u khách hàng có đ? quy?n, m?t kh?u này tr? thành m?t kh?u m?i, b?t k? c?a m?t kh?u c? đ? nh?ng g?.

Hai ch?c năng sau đây cung c?p các ví d? v? các ho?t đ?ng này:
ULONG ChangeUserPassword(WCHAR* pszUserDN, WCHAR* pszOldPassword,WCHAR* pszNewPassword)
{
	ULONG err = 1;
	LDAPMod modNewPassword;
	LDAPMod modOldPassword;
	LDAPMod *modEntry[3];
	BERVAL newPwdBerVal;
	BERVAL oldPwdBerVal;
	BERVAL *newPwd_attr[2];
	BERVAL *oldPwd_attr[2];
	WCHAR pszNewPasswordWithQuotes[1024];
	WCHAR pszOldPasswordWithQuotes[1024];

	// Build an array of LDAPMod.

	// For setting unicodePwd, this MUST be a double op.
	modEntry[0] = &modOldPassword;
	modEntry[1] = &modNewPassword;
	modEntry[2] = NULL;

	// Build mod struct for unicodePwd Add.
	modNewPassword.mod_op = LDAP_MOD_ADD | LDAP_MOD_BVALUES;
	modNewPassword.mod_type =	L"unicodePwd";
	modNewPassword.mod_vals.modv_bvals = newPwd_attr;

	// Build mod struct for unicodePwd Delete.
	modOldPassword.mod_op = LDAP_MOD_DELETE | LDAP_MOD_BVALUES;
	modOldPassword.mod_type =	L"unicodePwd";
	modOldPassword.mod_vals.modv_bvals = oldPwd_attr;


	// Password will be single valued, so we only have one element.
	newPwd_attr[0] = &newPwdBerVal;
	newPwd_attr[1]= NULL;
	oldPwd_attr[0] = &oldPwdBerVal;
	oldPwd_attr[1]= NULL;


	// Surround the passwords in quotes.
	wsprintf(pszNewPasswordWithQuotes,L"\"%s\"",pszNewPassword);
	wsprintf(pszOldPasswordWithQuotes,L"\"%s\"",pszOldPassword);

	// Build the BER structures with the UNICODE passwords w/quotes.
	newPwdBerVal.bv_len = wcslen(pszNewPasswordWithQuotes) * sizeof(WCHAR);
	newPwdBerVal.bv_val = (char*)pszNewPasswordWithQuotes;
	oldPwdBerVal.bv_len = wcslen(pszOldPasswordWithQuotes) * sizeof(WCHAR);
	oldPwdBerVal.bv_val = (char*)pszOldPasswordWithQuotes;


	// Perform single modify.
	err = ldap_modify_s(ldapConnection,
				pszUserDN,
				modEntry
				);

	if (err == LDAP_SUCCESS )
		wprintf(L"\nPassword succesfully changed!\n");
	else
		wprintf(L"\nPassword change failed!\n");

	return err;
}

ULONG SetUserPassword(WCHAR* pszUserDN, WCHAR* pszPassword)
{
	ULONG err = 1;
	LDAPMod modPassword;
	LDAPMod *modEntry[2];
	BERVAL pwdBerVal;
	BERVAL *pwd_attr[2];
	WCHAR pszPasswordWithQuotes[1024];

	// Build an array of LDAPMod.
	// For setting unicodePwd, this MUST be a single op.
	modEntry[0] = &modPassword;
	modEntry[1] = NULL;

	// Build mod struct for unicodePwd. 
	modPassword.mod_op = LDAP_MOD_REPLACE | LDAP_MOD_BVALUES;
	modPassword.mod_type =	L"unicodePwd";
	modPassword.mod_vals.modv_bvals = pwd_attr;

	// Password will be single valued, so we only have one element.
	pwd_attr[0] = &pwdBerVal;
	pwd_attr[1]= NULL;

	// Surround the password in quotes.
	wsprintf(pszPasswordWithQuotes,L"\"%s\"",pszPassword);

	// Build the BER structure with the UNICODE password.
	pwdBerVal.bv_len = wcslen(pszPasswordWithQuotes) * sizeof(WCHAR);
	pwdBerVal.bv_val = (char*)pszPasswordWithQuotes;


	// Perform single modify.
	err = ldap_modify_s(ldapConnection,
				pszUserDN,
				modEntry
				);

	if (err == LDAP_SUCCESS )
		wprintf(L"\nPassword succesfully set!\n");
	else
		wprintf(L"\nPassword set failed!\n");

	return err;
}
				

Thu?c tính

ID c?a bài: 269190 - L?n xem xét sau cùng: 22 Tháng Tám 2011 - Xem xét l?i: 2.0
Áp d?ng
  • Microsoft Windows 2000 Server
  • Microsoft Windows 2000 Advanced Server
  • Microsoft Windows 2000 Professional Edition
T? khóa: 
kbhowto kbmsg kbmt KB269190 KbMtvi
Máy d?ch
QUAN TRỌNG: Bài vi?t này đư?c d?ch b?ng ph?n m?m d?ch máy c?a Microsoft ch? không ph?i do con ngư?i d?ch. Microsoft cung c?p các bài vi?t do con ngư?i d?ch và c? các bài vi?t do máy d?ch đ? b?n có th? truy c?p vào t?t c? các bài vi?t trong Cơ s? Ki?n th?c c?a chúng tôi b?ng ngôn ng? c?a b?n. Tuy nhiên, bài vi?t do máy d?ch không ph?i lúc nào c?ng hoàn h?o. Lo?i bài vi?t này có th? ch?a các sai sót v? t? v?ng, cú pháp ho?c ng? pháp, gi?ng như m?t ngư?i nư?c ngoài có th? m?c sai sót khi nói ngôn ng? c?a b?n. Microsoft không ch?u trách nhi?m v? b?t k? s? thi?u chính xác, sai sót ho?c thi?t h?i nào do vi?c d?ch sai n?i dung ho?c do ho?t đ?ng s? d?ng c?a khách hàng gây ra. Microsoft c?ng thư?ng xuyên c?p nh?t ph?n m?m d?ch máy này.
Nh?p chu?t vào đây đ? xem b?n ti?ng Anh c?a bài vi?t này:269190

Cung cấp Phản hồi

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com