#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开发的关键技术。分类: 电脑/网络 >> *** 作系统/系统故障问题描述:
系统密码忘记了 重装盘放不进去 用网上的一些办法都进不去 不知道BIOS里能不能给系统添加用户?
解析:
真的不可以在bios里面实现的哈!我给你转个文章:
恢复XP管理员密码的五大秘诀
秘诀1:大家知道,WindowsXP的密码存放在系统所在的Winnt\System32\Config下SAM文件中,SAM文件即账号密码数据库文件。当我们登录系统的时候,系统会自动地和Config中的SAM自动校对,如发现此次密码和用户名全与SAM文件中的加密数据符合时,你就会顺利登录如果错误则无法登录。既然如此,我们的第一个方法就产生了:删除SAM文件来恢复密码。
如果你不用管本来系统卡包含的任意账号,而且有两个 *** 作系统的话,可以使用另外一个能访问NTFS的 *** 作系统启动电脑,或者虽然没有安装两个系统,但可以使用其他工具来访问NTFS。然后删除C:\WINNT\system32\config目录下的SAM文件,重新启动。这时,管理员 Administrator账号就没有密码了。当然,取下硬盘换到其他机器上来删除SAM文件也算个好办法。
小提示:WindowsNT/2000/XP中对用户账户的安全管理使用了安全账号管理器(Security AccountManager,SAM)的机制,安全账号管理器对账号的管理是通过安全标识进行的,安全标识在账号创建时就同时创建,一旦账号被删除,安全标识也同时被删除。安全标识是惟一的,即使是相同的用户名,在每次创建时获得的安全标识都是完全不同的。因此,一旦某个账号被删除,它的安全标识就不再存在了,即使用相同的用户名重建账号,也会被赋予不同的安全标识,不会保留原未的权限 。
安全账号管理器的具体表现就是%SystemRoot%\system32\config\sam文件。SAM文件是WindowsNT/2000/XP的用户账户数据库,所有用户的登录名及口令等相关信息部会保存在这个文件中。
秘诀2:下面介绍一个比较与众不同的方法。你可以在别的分区上再装一个XP,硬盘分区格式要和原来的一样,并且请你注意一定不要和原来的XP安装在同一分区!在开始之前,一定要事先备份引导区MBR(Master Boot Record).备份MBR的方法有很多,可以自己编程,或使用工具软件,如杀毒软件KV3000等。装完后用Administrator登录,现在你对原来的XP就有绝对的写权限了。你可以把原来的SAM拷下来,用lOphtcrack得到原来的密码。也可以把新安装的XP的Winnt\ System32\Config\下的所有文件覆盖到C\Winnt\System32\Config目录中(假设原来的XP安装在这里),然后用 KV3000恢复以前备份的主引导区MBR,现在你就可以用Administrator身份登陆以前的XP了。
小提示:MBR俗称"主引导区",它的作用是读取磁盘分区表(Partition Table)里面所设定的活动分区 (Active Partition),位于硬盘的柱面0、磁头0、扇区1的位置,也即俗你的0磁道位置。它是由分区命令fdisk产生的。MBR包括硬盘引导程序和分区表这两部分。MBR结束标志为55AA,用杀毒软件KV3000的F6功能即可查看,其默认画面即为MBR。如果MBR找不到活动分区,就会在屏幕上显示像Missing operating System等错误讯息,所以,如果你的WindowsXP无法正常开启。而你又在屏幕上看到类似这样的错误讯息,原因大多就是出在这里了。
秘诀3:使用Off1ine NT Password &Registry Editor。用该软件可以制作Linux启动盘,这个启动盘可以访问NTFS文件系统,因此可以很好地支持Windows2000/XP。使用该软盘中的一个运行在Linux的工具Ntpasswd就可以解决问题。并且可以读取注册表并重写账号密码。使用的方法很简单,只需根据其启动后的提示一步一步做就可以了。在此,建议你使用快速模式,这样会列出用户供你选择修改哪个用户的密码。默认选择Admin组的用户,自动找到把Administrator的名字换掉的用户,十分方便。
秘诀4:使用Windows Key 5.0。该软件包含在PasswareKit5.0中,用于恢复系统管理员的密码,运行后生成3个文件:txtsetup.oem.winkey.sys 和winkey.inf,3个文件一共才50KB,短小精悍。把这3个文件放到任何软盘中,然后使用XP安装光盘启动电脑,启动过程中按F6键让系统安装第三方的驱动程序。此时,正是我们切入的最好时机,放人该软盘就会自动跳到WindowsKey的界面。它会强行把Administrator的密码换成 "12345",如此一来何愁大事不成?呵呵!当你重新启动以后,你会被要求再次修改你的密码。
秘诀5:使用NTFS DOS这个可以从DOS下写NTFS分区的工具。用该软件制作一个DOS启动盘,然后到C\Winnt\System32下将屏幕保护程序 logon.scr改名,接着拷贝mand到C:\Winnt\system32下(2000可以用cmd.exe),并将该文件改名为 logon.scr。这样启动机器后等待5分钟,本应该出现的屏幕保护现在变成了命令行模式,而且是具有Administrator权限的,通过它就可以修改密码或者添加新的管理员账号了。改完后不要忘了把屏幕保护程序的名字改回去啊
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)