在英创的ARM9嵌入式工控板系列产品中,出厂的缺省配置是没有启用用户名和密码认证功能的,FTP Server采用的登录方式为匿名登录,因此首先是需要修改相关这部分的注册表,关闭匿名登录以及打开使用认证功能,其修改后的注册表项如下:
[HKEY_LOCAL_MACHINE\COMM\FTPD]
'AllowAnonymous'=dword:0
'UseAuthentication'=dword:1
修改注册表的方法有两种,方法一是利用程序代码来进行修改,代码如下:
_tcscpy (szTemp, TEXT('Comm\\FTPD'));
hKey = NULL;
hRes = RegCreateKeyEx (HKEY_LOCAL_MACHINE, szTemp, 0, NULL,
REG_OPTION_NON_VOLATILE, 0, NULL,
&hKey, &dwDisp);
if (hKey != NULL)
{
dwSize = 0;
RegSetvalueEx (hKey, TEXT('AllowAnonymous'), 0, REG_MULTI_SZ,
(const BYTE *)&dwSize, sizeof(DWORD));
dwSize = 1;
RegSetvalueEx (hKey, TEXT('UseAuthentication'), 0, REG_MULTI_SZ,
(const BYTE *)&dwSize, sizeof(DWORD));
RegFlushKey( hKey );
}
if (hKey)
RegCloseKey (hKey);
方法二是利用在调试连接成功的前提下,在eVC下利用工具中Tools-> Remote Registy Editor(WCE500)连接成功后,选择HKEY_LOCAL_MACHINE下的Comm–> FTPD中的参数进行修改,如下图所示:
注册表修改成功以后,然后就可直接调用相关的函数
BOOL NTLMSetUserInfo( LPTSTR pszUser, LPTSTR pszPassword );
来添加新的用户名和密码了,该函数定义在Ntlmssp.h 中。具体的设置代码如下:
_tcscpy( szUser, _T( 'Emtronix') );
_tcscpy( szPassword, _T( '86180660') );
bResult = NTLMSetUserInfo( szUser, szPassword );
在“Ntlmssp.h”中还包含了有关用户名、密码删除等API函数,用户可根据自身需求调用相关函数。