WINCE系统下的ntlmssp.dll提供了系统安全性的相关操作,
ntlmssp.h文件定义了下列接口函数:
1.添加用户
BOOL NTLMSetUserInfo(IN LPTSTR pszUser,IN LPTSTR pszPassword);
2.枚举系统所有用户
BOOL NTLMEnumUser(IN DWORD index,OUT LPTSTR pszUser,IN OUT LPDWORD pcchUser );
3.删除指定用户
BOOL NTLMDeleteUser(IN LPTSTR pszUser);
4.添加组
BOOL NTLMAddGroup(IN WCHAR *groupName);
5.删除指定的组
BOOL NTLMRemoveGroup(IN WCHAR *groupName);
6.枚举系统所有的组
BOOL NTLMEnumGroups( IN DWORD index, IN OUT WCHAR *groupName, IN OUT DWORD *dwSizeInChars);
7.添加指定用户到组
BOOL NTLMAddUserToGroup(IN WCHAR *groupName, IN WCHAR *userName);
8.删除指定组中的用户
BOOL NTLMRemoveUserFromGroup(IN WCHAR *groupName, IN WCHAR *userName);
9.枚举指定组中的所有用户
BOOL NTLMGetUserList(IN WCHAR *groupName, IN OUT WCHAR *userList, IN OUT DWORD *pdwccLen);
10.枚举包含指定用户的所有组
BOOL NTLMGetGroupList(IN WCHAR *userName, IN OUT WCHAR *groupList, IN OUT DWORD *pdwccLen);
通过NTLMSetUserInfo()可以方便的为系统的web或FTP服务器设置密码。
在EVC工程中引入ntlmssp.h并将ntlmssp.h文件拷入到项目文件夹下。
在程序中调用NTLMSetUserInfo设置用户名密码即可。
为系统设置了用户名密码后,但如果想在自己的应用程序中就加个登陆框
或者需要对密码做修改的话,还必须用到密码验证功能,从而来验证指定的用户是否合法。
仔细看了下ntlmssp.h,发现没有提供密码验证相关的接口函数,后来再Google上找到了解决方法:
系统提供了AuthHelp API(authhlp.lib)来对密码进行验证(定义在authhlp.h文件中).
通过AuthHelpValidateUser()函数即可实现密码验证。
函数原型:
BOOL AuthHelpValidateUserA(PSTR pszRemoteUser, PSTR pszPassword, TCHAR *pszACL, DWORD dwFlags);
BOOL AuthHelpValidateUserW(PWSTR wszRemoteUser, PWSTR wszPassword, TCHAR *pszACL, DWORD dwFlags);
其中AuthHelpValidateUserA的参数用户名密码为ASCII码;
AuthHelpValidateUserW的参数用户名密码为Unicode字符串;