#include <windows.h>
#include <lm.h>
BOOL AddMachineAccount(
LPWSTR wTargetComputer,
LPWSTR MachineAccount,
DWORD AccountType
)
{
LPWSTR wAccount
LPWSTR wPassword
USER_INFO_1 ui
DWORD cbAccount
DWORD cbLength
DWORD dwError
//
// Ensure a valid computer account type was passed.
//
if (AccountType != UF_WORKSTATION_TRUST_ACCOUNT &&
AccountType != UF_SERVER_TRUST_ACCOUNT &&
AccountType != UF_INTERDOMAIN_TRUST_ACCOUNT
)
{
SetLastError(ERROR_INVALID_PARAMETER)
return FALSE
}
//
// Obtain number of chars in computer account name.
//
cbLength = cbAccount = lstrlenW(MachineAccount)
//
// Ensure computer name doesn't exceed maximum length.
//
if(cbLength >MAX_COMPUTERNAME_LENGTH) {
SetLastError(ERROR_INVALID_ACCOUNT_NAME)
return FALSE
}
//
// Allocate storage to contain Unicode representation of
// computer account name + trailing $ + NULL.
//
wAccount=(LPWSTR)HeapAlloc(GetProcessHeap(), 0,
(cbAccount + 1 + 1) * sizeof(WCHAR) // Account + '$' + NULL
)
if(wAccount == NULL) return FALSE
//
// Password is the computer account name converted to lowercase
// you will convert the passed MachineAccount in place.
//
wPassword = MachineAccount
//
// Copy MachineAccount to the wAccount buffer allocated while
// converting computer account name to uppercase.
// Convert password (in place) to lowercase.
//
while(cbAccount--) {
wAccount[cbAccount] = towupper( MachineAccount[cbAccount] )
wPassword[cbAccount] = towlower( wPassword[cbAccount] )
}
//
// Computer account names have a trailing Unicode '$'.
//
wAccount[cbLength] = L'$'
wAccount[cbLength + 1] = L'\0'// terminate the string
//
// If the password is greater than the max allowed, truncate.
//
if(cbLength >LM20_PWLEN) wPassword[LM20_PWLEN] = L'\0'
//
// Initialize the USER_INFO_1 structure.
//
ZeroMemory(&ui, sizeof(ui))
ui.usri1_name = wAccount
ui.usri1_password = wPassword
ui.usri1_flags = AccountType | UF_SCRIPT
ui.usri1_priv = USER_PRIV_USER
dwError=NetUserAdd(
wTargetComputer,// target computer name
1, // info level
(LPBYTE) &ui, // buffer
NULL
)
//
// Free allocated memory.
//
if(wAccount) HeapFree(GetProcessHeap(), 0, wAccount)
//
// Indicate whether the function was successful.
//
if(dwError == NO_ERROR)
return TRUE
else {
SetLastError(dwError)
return FALSE
}
}
1、用VisualStudio2010旗舰版,它是专为Win7打造的,其他的版本也可以兼容,而且支持VC/VB/C#多种语言开发,安装下来才2G多,是一款相当不错的开发软件。2、用开发版的比较好,学习版的有些功能减掉了。3、eclipseCDT也可以。纯绿色软件,解压缩就能用。完美支持win7。4、学一门语言最好的方式就是记事本+编译器。什么东西都要自己手写。这样映像才深。学的才透。5、VisualStudio(VS)是一套完整的开发工具集,用于生成ASP.NETWeb应用程序、XMLWebServices、桌面应用程序和移动应用程序。VisualBasic、VisualC++、VisualC#和VisualJ#全都使用相同的集成开发环境(IDE),利用此IDE可以共享工具且有助于创建混合语言解决方案。另外,这些语言利用了.NETFramework的功能,通过此框架可使用简化ASPWeb应用程序和XMLWebServices开发的关键技术。可以用system()函数间接调用net命令实现,例如:system("net user abcd 1234 /add")
/*创建一个用户abcd,密码是1234*/
需要包含stdlib.h文件
******************************************************
关于修改密码,可以查询一下NetUserChangePassword()函数的用法。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)