1,317
社区成员
发帖
与我相关
我的任务
分享
//第一种方法是用dos命令
WinExec("net use M: //18.139.xxx.xxx/c$ ""密码"" /user:""用户名"",SW_HIDE);
第二种方法用用NetShareAdd函数:
HANDLE hToken;
TOKEN_PRIVILEGES tk;
OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES|TOKEN_QUERY,& hToken);
LookupPrivilegeValue(NULL,SE_SHUTDOWN_NAME,& tk.Privileges[0].Luid);
tk.PrivilegeCount=1;
tk.Privileges[0].Attributes=SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(hToken,FALSE,& tk,0,(PTOKEN_PRIVILEGES)NULL,0);/**/
NET_API_STATUS res;
SHARE_INFO_2 p;
DWORD parm_err = NULL;
p.shi2_netname = WideString(sNetname.SubString(1,sNetname.Length()));
//p.shi2_netname = WideString("helo");
ShowMessage(AnsiString(p.shi2_netname).Length());
p.shi2_type = STYPE_DISKTREE; // disk drive
p.shi2_remark = WideString("TESTSHARE to test NetShareAdd") ;
p.shi2_permissions = 0;
p.shi2_max_uses = -1;
p.shi2_current_uses = 0;
p.shi2_path = WideString(sPath.SubString(1,sPath.Length()-1));
//p.shi2_path = WideString("c:\\");
//ShowMessage(p.shi2_path);
p.shi2_passwd = NULL; // no password
res=NetShareAdd(NULL, 2, (LPBYTE) &p, &parm_err);
switch(res)
{
case NERR_Success: sMsg = ("成功共享"+sPath+"\n");break;
case ERROR_ACCESS_DENIED:sMsg = ("ERROR_ACCESS_DENIED\n");break;
case ERROR_INVALID_LEVEL:sMsg = ("ERROR_INVALID_LEVEL\n");break;
case ERROR_INVALID_NAME:sMsg = ("ERROR_INVALID_NAME\n");break;
case ERROR_INVALID_PARAMETER:sMsg = ("ERROR_INVALID_PARAMETER\n");break;
case NERR_DuplicateShare:sMsg = ("NERR_DuplicateShare\n");break;
case NERR_RedirectedPath:sMsg = ("NERR_RedirectedPath\n");break;
case NERR_UnknownDevDir:sMsg = ("NERR_UnknownDevDir\n");break;
default:sMsg = ("未知的错误\n");break;
}