freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內容

基于c遠程控制系統(tǒng)的設計畢業(yè)論文(編輯修改稿)

2025-07-19 01:17 本頁面
 

【文章內容簡介】 me[1024]。 DWORD dwCount = 1024。 CString csSend = connect|。 csSendBuff = 。 dwCurSend = 0。 ::GetComputerName(chName, amp。dwCount)。//取計算機名 chName[dwCount] = 0。 csSend += chName。 csSend = csSend + | + pMainWndm_RemoFace + | + pMainWndm_RemoGruop + |。 dwCount = 1024。 ::GetUserName(chName, amp。dwCount)。//取登陸用戶名 chName[dwCount] = 0。 csSend += chName。 MySendTo(csSend)。//發(fā)送登陸信息 } CAsyncSocket::OnConnect(nErrorCode)。} 系統(tǒng)各模塊界面設計及其實現 屏幕監(jiān)控模塊 服務端向客戶端第一次發(fā)送獲取屏幕命令時,客戶端并非立刻截屏然后將數據發(fā)送服務端,考慮到多個客戶端的屏幕分辨率大小不一致的情況下,客戶端首次收到服務端的屏幕監(jiān)控命令后,應先將客戶端當前屏幕分辨率發(fā)送給服務端,服務端在窗口上創(chuàng)建一個矩形區(qū)域用于顯示客戶端桌面圖片,然后才是屏幕數據的傳輸,由于客戶端不停的發(fā)送屏幕數據,為了能使服務端區(qū)分每一幀的屏幕,客戶端在發(fā)送屏幕數據前,在屏幕數據尾部添加10個字節(jié)自定義的數據包,服務端在每次接收數據后都會檢驗數據包尾部是不是自定義的數據包,如果是在表示一幀圖片傳輸完畢??蛻舳税l(fā)送屏幕數據的代碼見附錄。服務端接收到客戶端桌面圖片數據后,此時還不能將圖片直接畫到窗口上,因為圖片數據發(fā)送前是經過壓縮的,因此應先解壓,再將解壓后的圖片畫到窗口上,然后再發(fā)送請求下一幀桌面圖片的請求。屏幕傳輸代碼見附錄。 整個屏幕傳輸流程圖如圖51:發(fā)送截屏命令解析命令截屏使用CxImage庫將BMP數據轉換成JPEG使用zlib庫將JPEG圖片進一步壓縮在壓縮后的數據尾部添加10個 自定義數據包發(fā)送數據接收數據是數據包尾嗎?是否使用zlib庫將數據包解壓顯示圖片服務端客戶端停止傳輸嗎?停止傳輸是否圖51 屏幕傳輸流程圖 文件操作模塊該模塊界面設計如圖52所示:圖52 文件傳輸界面CAsyncSocket是異步非阻塞類,在文件傳輸過程中,Send()函數一調用就立刻返回,因此發(fā)送端常常無法知道接收端是否已經接收到完整數據,在此算法設計中,可以將接收端當前接收的總數據量大小發(fā)送給發(fā)送端,發(fā)送端則可以用此來比較客戶端是否已經接收完全。文件傳輸的代碼見附錄。 命令操作模塊系統(tǒng)注冊表、服務、進程操作是服務端向客戶端發(fā)送相應命令,然后客戶端根據不同命令執(zhí)行不同操作,如:枚舉注冊表、系統(tǒng)服務等,然后將枚舉出的信息以文本形式發(fā)送到服務端,服務端再將信息顯示到界面上。 1. 枚舉客戶端進程模塊界面設計如圖53所示:圖53 枚舉客戶端進程模塊界面 要對一個任意進程(包括系統(tǒng)安全進程和服務進程)進行指定了寫相關的訪問權的OpenProcess操作,只要當前進程具有SeDeDebug權限就可以了。要是一個用戶是Administrator或是被給予了相應的權限,就可以具有該權限??墒牵退阌肁dministrator帳號對一個系統(tǒng)安全進程執(zhí)行OpenProcess還是會遇到“訪問拒絕”的錯誤。原來在默認的情況下進程的一些訪問權限是沒有被使能(Enabled)的,所以要做的首先是使能這些權限。與此相關的一些API函數有OpenProcessToken、LookupPrivilegevalue、AdjustTokenPrivileges。現在要修改一個進程的訪問令牌,首先要獲得進程訪問令牌的句柄,這可以通過OpenProcessToken得到??蛻舳诉M程提權代碼如下:bool MyMproveProcPriv(){ HANDLE token。if(!OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES,amp。token)) return FALSE。 TOKEN_PRIVILEGES tkp。 = 1。 // 獲得 SE_DEBUG_NAME 特權 ::LookupPrivilegeValue(NULL,SE_DEBUG_NAME,amp。[0].Luid)。 [0].Attributes = SE_PRIVILEGE_ENABLED。 if(!AdjustTokenPrivileges(token,FALSE,amp。tkp,sizeof(tkp),NULL,NULL)) { return FALSE。 } CloseHandle(token)。 return TRUE。} 枚舉客戶端系統(tǒng)進程核心代碼如下:CString MyGetProcess(){CString csTemp = , csPid。HANDLE hSnapshot, mehandle。hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0)。PROCESSENTRY32 pe。MODULEENTRY32 me。 = sizeof(PROCESSENTRY32)。Process32First(hSnapshot, amp。pe)。do{mehandle=CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, )。 = sizeof(MODULEENTRY32)。Module32First(mehandle, amp。me)。(%d, )。if ( == 0)csTemp = csTemp + + * + csPid + *System + | 。elsecsTemp = csTemp + + * + csPid + * + + | 。CloseHandle(mehandle)。}while(Process32Next(hSnapshot, amp。pe))。CloseHandle(hSnapshot)。return csTemp。} 2. 枚舉客戶端系統(tǒng)服務模塊界面設計如圖54所示:圖54 枚舉客戶端系統(tǒng)服務模塊界面在對服務進行管理設置前,需要以相應的權限打開服務,可通過下面兩個API實現SC_HANDLE OpenSCManager( LPCTSTR lpMachineName, // pointer to machine name string LPCTSTR lpDatabaseName, // pointer to database name string DWORD dwDesiredAccess // type of access)。SC_HANDLE OpenService( SC_HANDLE hSCManager, // handle to service control manager database LPCTSTR lpServiceName, // pointer to name of service to start DWORD dwDesiredAccess // type of access to service)。而想要對服務進行設置就需要知道服務的當前信息,對我們有用的通常是以下幾項:服務名稱,顯示名稱,啟動狀態(tài),啟動方式,程序路徑等。這些信息我們可以通過API函數EnumServicesStatus來實現,該函數會將以上信息放入一個結構體LPENUM_SERVICE_STATUS中。枚舉系統(tǒng)服務核心代碼如下:CString MyGetService(){ LPENUM_SERVICE_STATUS lpServices = NULL。 LPQUERY_SERVICE_CONFIG ServicesInfo = NULL。 DWORD nSize = 0, n, nResumeHandle = 0。 CString csResult = 。 SC_HANDLE scm, service。 scm = OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS)。 if(scm == NULL) return 。 lpServices = (LPENUM_SERVICE_STATUS) LocalAlloc(LPTR, 64 * 1024)。 EnumServicesStatus(scm, SERVICE_WIN32, SERVICE_STATE_ALL, (LPENUM_SERVICE_STATUS)lpServices, 64 * 1024, amp。nSize, amp。n, amp。nResumeHandle)。 ServicesInfo = (LPQUERY_SERVICE_CONFIG) LocalAlloc(LPTR, 4 * 1024)。 for (DWORD i = 0。 i n。 i++) { csResult = csResult + lpServices[i].lpServiceName + * 。 DWORD nResumeHandle = 0。 service=OpenService(scm,lpServices[i].lpServiceName, SERVICE_ALL_ACCESS)。 if (!service) continue 。 QueryServiceConfig(service, ServicesInfo, 4 * 1024, amp。nResumeHandle)。//枚舉各個服務信息 CloseServiceHandle(service)。 } CloseServiceHandle(scm)。 LocalFree((HLOCAL)lpServices)。 LocalFree((HLOCAL)ServicesInfo)。 return csResult。} 3. 枚舉客戶端注冊表模塊界面設計如圖55所示:圖55 枚舉客戶端注冊表模塊界面 對于注冊表的操作,首先通過調用RegOpenKey函數打開某一注冊表項,然后執(zhí)行RegSetValueEx或RegQueryValueEx進行對該注冊表項的讀寫。枚舉客戶端注冊表核心代碼如下:CString MyGetAllRegKeyValue(HKEY MainKey, CString KeyName){ DWORD dwIndex = 0, dwSize = 1024, dwType = REG_SZ。 char chKeyName[1024]。 CString csRes = 。 HKEY hkKey。 if (::RegOpenKey(MainKey, KeyName, amp。hkKey) != ERROR_SUCCESS) return 。 while(::RegEnumValue(hkKey, dwIndex, chKeyName, amp。dwSize, 0, amp。dwType, NULL, NULL) == ERROR_SUCCESS) { char chKeyValue[1024]。 DWORD dwTxtSize = 1024。 if (::RegQueryValueEx(hkKey, chKeyName, NULL, amp。dwType, (LPBYTE)chKeyValue, amp。dwTx
點擊復制文檔內容
外語相關推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1