When the number of failed logon attempts is exceeded, the user account becomes locked out for the number of minutes specified by the lockoutDuration attribute. The IADsUser.IsAccountLocked property appears to be the property to use to read and modify the lockout state of a user account, but the WinNT ADSI provider has restrictions that limit the use of the IsAccountLocked property.
Resetting the Account Lockout StatusWhen using the WinNT provider, the IsAccountLocked property can only be set to FALSE, which unlocks the account. Attempting to set the IsAccountLocked property to TRUE will fail. Only the system can lock an account.
The following code example demonstrates how to use Visual Basic with ADSI to unlock a user account.
HRESULT UnlockAccount(LPCWSTR pwszUserDN)
{
if(!pwszUserDN)
{
return E_INVALIDARG;
}
// Build the ADsPath.
CComBSTR sbstr = "WinNT://";
sbstr += pwszUserDN;
HRESULT hr;
CComPtr<IADsUser> spADsUser;
// Bind to the object.
hr = ADsOpenObject(sbstr,
NULL,
NULL,
ADS_SECURE_AUTHENTICATION,
IID_IADsUser,
(void**)&spADsUser);
if(S_OK != hr)
{
return hr;
}
// Set the IsAccountLocked property to FALSE;
hr = spADsUser->put_IsAccountLocked(VARIANT_FALSE);
// Commit the changes to the server.
hr = spADsUser->SetInfo();
return hr;
}
With the WinNT provider, the IsAccountLocked property can be used to determine if an account is locked out. If an account is locked out, the IsAccountLocked property will contain TRUE. If an account is not locked out, theIsAccountLocked property will contain FALSE.
The following code example demonstrates how to use Visual Basic with ADSI to determine if an account is locked out.
HRESULT IsAccountLocked(LPCWSTR pwszUserDN, BOOL *pfLocked)
{
if(!pwszUs
IplImage* face=cvCreateImage(cvSize(width,height),copy_Frame->depth,copy_Frame->nChannels);
//因为IplImage的origin=0,所以要先将face->origin改为1
face->origin=copy_Frame->origin;//1
首先,下载Mingw TDM 4.3.0版本
http://www.tdragon.net/recentgcc/
有两种选择
GCC 4.3.0-tdm-2 (Default SJLJ exceptions) 和 GCC 4.3.0-tdm-2 With DW2 Exceptions
可以根据SJLJ or DW2 (Dwarf-2) 异常模型来选择需要下载的版本,通常情况下win32平台下选择SJLJ(set jump long jump)模型
然后还需要去Mingw官网下载
binutils
http://downloads.sourceforge.net/mingw/binutils-2.18.50-20080109-2.tar.gz
mingw-runtime (mingw-runtime-3.14.tar.gz, 494KB)
http://downloads.sourceforge.net/mingw/mingw-runtime-3.14.tar.gz
w32api (w32api-3.11.tar.gz, 1.55MB)
http://downloads.sourceforge.net/mingw/w32api-3.11.tar.gz
也可以选择安装以下组件
mingw-utils
http://downloads.sourceforge.net/mingw/mingw-utils-0.3.tar.gz
mingw32-make(可以选择最新的mingw32-make-3.81-20080326-2)
http://downloads.sourceforge.net/mingw/mingw32-make-3.81-2.tar.gz
gdb(可以选择最新的6.8试验版)
http://downloads.sourceforge.net/mingw/gdb-6.6.tar.bz2
把这些东西都下载下来,然后解压到不同的目录,每个目录里面大概都会有bin,include,lib,man这样的目录,要做的就是合并它们,也就是拷贝到同一个目录里面,注意可能有些文件会重复,一般来说GCC 4.3.0 TDM包里面的文件比较重要,不要用其他的包里面的文件覆盖了它
然后就可以得到一个完整包含gcc,g++,binutils,gdb,make等的目录了,此时,在windows环境变量中的path变量里面添加该目录的bin子目录,就可以在cmd窗口中调用gcc和g++进行编译了。如果你不想污染了环境变量,也可以写个bat:(假设你的mingw目录是C:\mingw\bin)
set path=C:\mingw\bin;%path%"
现在还没有结束,需要进行两个地方的设置
1 make
mingw官方提供的make工具,名称不是简单的make,而是mingw32-make.exe,把它改名成make.exe或者复制一份为make.exe都可以
2 gcc: CreateProcess: No such file or Directory 错误
这个问题在google里面很多人发问,但是没有一个完整的解答,下面给出一个完整的解答
产生这个错误有两个原因:
第一是gcc无法找到安装目录里面的libexec目录里面的工具,通常这些工具包括cc1.exe,cc1plus.exe,collect2.exe,它们通常存放在:
安装目录\libexec\gcc\mingw32\4.3.0
第二是gcc无法找到mingw目录里面binutils的工具,它们通常存放在
安装目录\mingw32\bin
这两个目录的名字并不完全固定,根据不同组织编译的gcc各有不同,比如mingw官方编译的gcc4.3.0 alpha,上述目录就是
安装目录\gcc\i386-pc-mingw32\4.3.0
而官方提供的binutils包里面是
安装目录\i686-pc-mingw32\bin
只要这两个地方没有设置好,就可能导致CreateProcess错误,那么,有没有什么好办法能够确定这里应该怎样命名呢?办法是用16进制编辑器打开gcc.exe,搜索GCC_EXEC_PREFIX,当搜索到该字符串(不止一个)时,观察后面是否出现版本号4.3.0,如果出现,后面紧接着的就是路径,如果是mingw32那么上面的命名就应该是
安装目录\libexec\gcc\mingw32\4.3.0
安装目录\mingw32\bin
如果是其他的例如i686-pc-mingw32,那么名称相应的变为
安装目录\libexec\gcc\i686-pc-mingw32\4.3.0
安装目录\i686-pc-mingw32\bin
好了,可以测试一下你的hallo world程序了^_^