Страница 10 из 24 16)-------------------------------------------------------------------------- Q> Как подключить сетевой диск? A> DWORD ConnectRemoteDrive(LPSTR ShareName,LPSTR LocalDrive) { NETRESOURCE nr; ZeroMemory(&nr,sizeof(nr)); nr.dwScope=RESOURCE_GLOBALNET; nr.dwType=RESOURCETYPE_DISK;//RESOURCETYPE_ANY; nr.dwDisplayType=RESOURCEDISPLAYTYPE_GENERIC; nr.dwUsage=RESOURCEUSAGE_CONNECTABLE; nr.lpLocalName=LocalDrive; nr.lpRemoteName=ShareName; nr.lpComment=""; nr.lpProvider=NULL; return WNetAddConnection2(&nr, // NETRESOURCE from enumeration (LPSTR) NULL, // no password (LPSTR) NULL, // logged-in user CONNECT_UPDATE_PROFILE); // update profile with connect info } 17)------------------------------------------------------------------------- Q> А как его отключить? A> WNetCancelConnection2(LPSTR LocalDrive,CONNECT_UPDATE_PROFILE,TRUE); 18)------------------------------------------------------------------------- Q> Как послать сообщение юзеру(а-ля net send) A> Вариант 1: NET_API_STATUS x=NetMessageBufferSend( LPTSTR servername, LPTSTR msgname, LPTSTR fromname, LPBYTE buf, DWORD buflen ); Вариант 2: Можно через CreateFile/WriteFile, но в этом случае можно послать сообщение только компьютеру либо на локальную рабочую группу. Вот пример:(работает как под NT так и под 9x); HANDLE hSlot = CreateFile("\\\\computername\\mailslot\\messngr", GENERIC_WRITE, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); if (hSlot != INVALID_HANDLE_VALUE) { char buf = "From\0\To\0Message\0"; uint cb = sizeof(buf); WriteFile(hSlot, buf, cb, &cb, NULL); CloseHandle(hSlot); } 19)-------------------------------------------------------------------------- Q> Как создать юзера и дать ему права? A> NET_API_STATUS UserAdd(LPSTR username) //(c) Serge Andyk { // некоторые используемые функции описаны выше USER_INFO_2 user_info; char compname[256]; wchar_t wcompname[256]; DWORD parm_err=0; LSA_HANDLE PolicyHandle; LPTSTR lpszSystemInfo; // ptr. to system info. string DWORD cchBuff = 256; // size of comp. or user name TCHAR tchBuffer2[256]; // buffer for concat'd. str. WCHAR wGroupNameAdd[20]=L"Administrators"; lpszSystemInfo = tchBuffer2; ZeroMemory(&user_info,sizeof(user_info)); GetComputerName(lpszSystemInfo, &cchBuff); strcpy(compname,"\\\\"); strcat(compname,lpszSystemInfo); mbstowcs( wcompname, compname, strlen(compname)+1 ); mbstowcs(user_info.usri2_name,username, strlen(username)+1 ); //-------создаем юзера------------// user_info.usri2_password = L""; user_info.usri2_priv = USER_PRIV_USER; user_info.usri2_flags = UF_SCRIPT|UF_PASSWD_CANT_CHANGE|UF_DONT_EXPIRE _PASSWD|UF_NORMAL_ACCOUNT; user_info.usri2_acct_expires=TIMEQ_FOREVER; NetUserAdd(wcompname,// PDC name 2L, // level (LPBYTE)&user_info, // input buffer &parm_err ); // parameter in error GetAccountSid( NULL, // default lookup logic username, // account to obtain SID &pSid // buffer to allocate to contain resultant SID ); NetLocalGroupAddMember(0,wGroupNameAdd,pSid); //---------даем ему кое-какие права-----------// OpenPolicy( wcompname, // target machine POLICY_ALL_ACCESS, &PolicyHandle // resultant policy handle ); |