1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Các chương trình quản lý phòng máy hiện nay ở Việt Nam - 5 pptx

25 335 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 25
Dung lượng 730,63 KB

Nội dung

101 hàm API CreateDC: tạo ngữ cảnh thiết bị hàm API GetDeviceCaps: lấy các thông số của thiết bị. Áp dụng mã vào chương trình như sau: HDC hScrDC; hScrDC = CreateDC("DISPLAY", NULL, NULL, NULL); int xScrn, yScrn; xScrn = GetDeviceCaps(hScrDC, HORZRES); yScrn = GetDeviceCaps(hScrDC, VERTRES); //resize cho lon nhat . Day la topmost window SetWindowPos(&wndTopMost, 0, 0, xScrn, yScrn, SWP_SHOWWINDOW); Hai dòng đầu tạo một HDC cho thiết bị màn hình hiển thị, do tính chất đặc biệt của màn hình mà hàm chỉ cần nhận tham số tên “DISPLAY” là có thể trả về kết quả. Ba dòng kế tiếp có tác dụng lấy độ rộng và độ dài của màn hình. Dòng cuối là gọi phương thức SetWindowPos như cách 1. Có một lưu ý nhỏ ở đây là ta vẫn có thể sử dụng thay thế hàm SetWindowPos bằng một hàm API khác là MoveWindow . Để biết chi tiết hàm, xem thêm trong Phụ lục Các hàm API hữu ích sử dụng trong chương trình. Hàm API này tuy có chức năng tương tự với SetWindowPos nhưng hàm lại không có chức năng quản lý việc “nổi” lên trên cửa sổ khác.Mặc dù theo thiết kế ban đầu khi khởi động xong, chỉ có một cửa sổ màn hình che phủ toàn bộ màn hình, rất có khả năng người dùng nhanh tay kích hoạt một cửa sổ nào đó trên desktop. Khi ấy, sử d ụng hàm MoveWindow lại không làm cửa sổ “nổi” lên trên tất cả các cửa sổ còn lại. Hàm SetWindowPos lại có thêm tác dụng hữu ích này. Thử nghiệm: Chương trình vô hiệu hóa tuyệt đối việc tương tác của người dùng với desktop bằng mouse. Chỉ còn lại một việc nữa phải làm là vô hiệu hóa bàn phím. 102 Hình 3-6 Màn che mouse 3.2.2.2 Tương tác bằng bàn phím: Mục tiêu ban đầu là không cho người dùng gõ những phím tắt kích hoạt chương trình. Tuy nhiên, ta không cần vô hiệu hóa cả bàn phím. Điều này rất lãng phí công sức. Thực chất, ta thực hiện mục tiêu dưới điều kiện hoàn thành ngăn chặn tương tác với mouse. Vì vậy các loại tương tác làm cho xuất hiện các chương trình thông thường như Windows Explorer (Win key + E)… không làm ta quan tâm vì các cửa sổ chương trình đó không thể “nổi” bằng cửa sổ màn hình che. Vì vậy, chỉ còn lạ i các loại phím và tổ hợp phím tắt “nhạy cảm” cấp thấp mà thôi. Các loại phím tắt đó là: o Win key : có tác dụng bật Start menu. o Alt + Tab : có tác dụng đổi cửa sổ đang hoạt động. o Alt + Esc : có tác dụng kích hoạt cửa sổ kế trên thanh taskbar. 103 o Ctrl + Esc: có tác dụng tương tự Win key o Ctrl + Shift + Esc : có tác dụng bật Task Manager. o Esc : đây là vấn đề về kỹ thuật làm, theo thiết kế ta tạo một cửa sổ hộp thoại đơn giản, nên chịu tác dụng của phím Esc, có tác dụng tắt cửa sổ màn che. o Alt + F4 : có tác dụng tắt cửa sổ màn hình che. o Ctrl + Alt + Del : có tác dụng bật Task Manager, hay hộp lựa chọn tùy theo cấu hình Windows (đây là tổ hợp phím gây “nhứ c đầu” nhiều nhất, ta sẽ đề cập kỹ trong phần sau). o Ctrl + Shift + Esc : bật Task Manager. May mắn thay, trong 7 tổ hợp phím đầu, ta dễ dàng loại bỏ khi sử dụng kỹ thuật lập trình bằng hook, xem chi tiết về kỹ thuật này trong 3.1 Kỹ thuật lập trình sự kiện và hook và mã nguồn chương trình. Ta chỉ áp dụng xây dựng một hook đơn giản lọc bỏ trong quá trình đợi đăng nhập và loạ i bỏ khi đăng nhập xong. Tuy nhiên, với 2 tổ hợp phím cuối cùng, Ctrl + Alt + Del và Ctrl + Shift + Esc (về sau ta gọi tắt chỉ một mình tổ hợp Ctrl + Alt + Del vì tổ hợp Ctrl + Shift + Esc cũng có tính năng tương tự), khá phức tạp. Ta phải hiểu rõ cơ chế truyền gởi thông điệp Ctrl – Alt – Del. Hook bàn phím không thể bắt được tổ hợp phím Ctrl – Alt – Del ! Tại sao ? Vì chính bản thân hệ điều hành Windows không hề gởi tổ hợp phím này cho hook chain. Nó đã đượ c chặn bắt và xử lý ở mức thấp hơn ở hệ thống và không bao giờ được gởi lên ứng dụng. Ứng dụng nếu có cài đặt cũng chỉ nhận được các phím Ctrl, Alt, và Del rời rạc chứ không phải là tổ hợp Ctrl – Alt – Del. Tổ hợp phím sau đó sẽ gởi đến cơ chế khởi động đăng nhập của Windows, gọi là Winlogon, gồm 3 thành phần : thành phầ n thực thi (“winlogon.exe”), thư viện liên kết động “Chứng thực và nhận dạng theo cơ chế đồ họa” (Graphical Identification and Authentication GINA) (“msgina.dll”), và các thành phần mạng. Tham khảo các tài liệu, ta tìm thấy các cách khống chế tổ hợp Ctrl – Alt – Del, một số cách dựa trên việc khống chế một trong hai thành phần đầu trong cơ chế khởi động đăng nhập của Windows như sau: 104 • Giả lập “lừa” hệ điều hành rằng đang có một screensaver đang chạy, tổ hợp phím được gởi nhưng không kích hoạt Task Manager. Tuy nhiên, cách này chỉ có tác dụng ở các phiên bản hệ điều hành Win98, không có tác dụng trên WinXP. Cách này cũng rất hạn chế khi chỉ có tác dụng khi có thiết lập hệ thống phù hợp, một số tài liệu cho rằng cả phiên bản hệ điều hành Win98 cũng không có tác dụng !. • Vô hiệu hóa Task Manager bằng chính sách (policy). Cách này không hề xử lý ở “gốc”, chặn bắt thông điệp Ctrl – Alt – Del, mà xử lý ở “ngọn”, đặt chính sách hệ thống ngăn chặn kích hoạt Task Manager. Cách này đơn giản nhưng không dùng được vì thông điệp thông báo : Hình 3-7 Thông báo của policy về việc vô hiệu hóa Task Manager khá bực mình, lại còn làm xuất hiện Start Menu. • Bắt thông điệp ở tận “gốc” khi xây dựng driver thiết bị bàn phím. Lúc đó, phải sử dụng Device Development Kit (bộ phát triển thiết bị). Đây là lĩnh vực lập trình hoàn toàn mới, với thời gian nghiên cứu không cho phép, ta bỏ qua khả năng này. • Viết một GINA stub. GINA là một thư viện liên kết động mà Winlogon dùng để chứng thực người dùng. Đây là một cách khá hay, nhưng nó lại làm thay đổi cách đăng nhập của người dùng đồng thời vô hiệu hóa màn hình Welcome, và chớp màn hình mỗi khi người dùng nhấn Ctrl – Alt – Del. Tuy ta không sử dụng cách này nhưng có thể xem thêm về kỹ thuật này trong Phụ lục GINA stub – kỹ thuật xây dựng. • Tạo một desktop mới và chuyển sang desktop mới này. Vì kích hoạt Task Manager bằng tổ hợp phím Ctrl – Alt – Del chỉ làm xuất hiện Task Manager 105 trên “Default” desktop (desktop cũ), nên trên desktop mới sẽ không có xuất hiện. Cách này khá hiệu quả khi ta xây dựng màn hình che bên desktop mới, người dùng đăng nhập vào thì trở lại desktop cũ. Khuyết điểm nhỏ của cách này là hơi phức tạp về mặt lý thuyết cài đặt chương trình, và người dùng đăng nhập vào thành công sẽ thấy Task Manager hiện ra mặc dù trước đó có vẻ việc nhấn Ctrl – Alt – Del không có tác dụng. Tuy ta không sử dụng cách này nhưng có thể xem thêm về k ỹ thuật này trong Phụ lục Tạo thêm và sử dụng Desktop mới. • Kế thừa, trở thành lớp con của lớp cửa sổ SAS trong tiến trình Winlogon. Để làm được điều này, mã phải được “chích” (inject) vào tiến trình Winlogon và sau đó tạo lớp con kế thừa Windows Procedure. Kỹ thuật này không tương thích với Windows 95/98/Me. Ta sẽ sử dụng kỹ thuật này để vô hiêu hóa tổ hợp phím Ctrl – Alt - Del. Module xây dựng gồm có hai phần lớn : tạo lớp con kế thừa lớp cửa sổ SAS của Winlogon. * T ạo lớp con kế thừa lớp cửa sổ SAS của Winlogon: Hàm API SetWindowLong sẽ giúp ta thực hiện điều này: Áp dụng hàm vào trong chương trình: SetWindowLong(hWnd, GWL_WNDPROC, NewWindowProc); Lời gọi chỉ có tác dụng cho các cửa sổ được tạo bởi cùng ứng dụng gọi hàm (địa chỉ hàm NewWindowProc chỉ có nghĩa với tiến trình gọi hàm SetWindowLong). Như vậy, ta sẽ dùng một cách nào đó ánh xạ được điạ chỉ của NewWindowProc vào trong không gian địa chỉ của tiến trình ở xa và chuyển địa chỉ đó đến lời gọi hàm SetWindowLong. Để có thể hiểu cơ ch ế nạp một chương trình vào bộ nhớ, cũng như định nghĩa về không gian địa chỉ của tiến trình, xem thêm Phụ lục Quá trình nạp một hook DLL toàn cục. Bây giờ, ta sẽ bàn về kỹ thuật injection. * Kỹ thuật injection: 106 Khả năng ứng dụng của kỹ thuật injection rất mạnh mẽ và hữu ích. Ưu điểm này cũng lại là khuyết điểm. Vì càng có nhiều khả năng ứng dụng mà không bị hạn chế, kỹ thuật injection đòi hỏi các lập trình viên cần phải lập trình cực kỳ cẩn thận các đọan mã mà họ sẽ “chích” vào tiến trình ở xa. Mọi hành động “chích” lầm sẽ dẫn đến hậu quả cực kỳ nguy hiểm như crash chương trình ở xa, treo máy… Tuy nhiên, việc lập trình thành công bằng kỹ thuật injection sẽ gợi mở nhiều khả năng lập trình thú vị như : xem mật khẩu dạng * trên một cửa sổ khác, Hình 3-8 Ứng dụng xem mật khẩu từ cửa sổ khác điều khiển hoạt động của các tiến trình hệ thống Windows như : giấu tên tiến trình đang chạy trong hai tab Applications” và “Processes” của Task Manager, … đặc biệt là ứng dụng mà ta cần là vô hiệu hóa Ctrl – Alt – Del. Vậy thực chất kỹ thuật injection là gì ? Kỹ thuật ánh xạ bộ nhớ (mã chương trình) vào trong không gian địa chỉ của một tiến trình ở xa được gọi là kỹ thuật injection. Việc injection có thể thực hiện bởi một trong những cài đặt sau: • Registry. Để “chích” một DLL vào một tiến trình, chỉ cần đơn giản thêm tên DLL đó vào trong khóa registry: HKLM\Software\Microsoft\Windows NT\ 107 CurrentVersion\Windows\AppInit_DLLs:STRING chỉ hỗ trợ trên Windows NT trở lên. • Hook. Cách này hỗ trợ trên mọi phiên bản Windows. • Sử dụng CreateRemoteThread()/LoadLibrary(), chỉ đúng với Windows NT và cao hơn. • Sao chép mã trực tiếp vào tiến trình ở xa bằng WriteProcessMemory() và thực thi nó bằng hàm CreateRemoteThread(), chỉ đúng với Windows NT và cao hơn. Mức độ cẩn thận trong lập trình tăng dần từ trên xuống trong 4 cài đặt của kỹ thuật, tỉ lệ nghịch với việc tiêu tốn tài nguyên (giảm dần từ trên xuống). Cơ chế hook vẫn áp dụng được trong kỹ thuật này nhưng việc áp dụng nó khá tiêu tốn tài nguyên h ệ thống. Ta sẽ thực hiện phương án cuối để áp dụng kỹ thuật injection cho cài đặt trong phần mềm. Phương án 3 cũng khả thi nhưng lại không ổn định, tùy thiết lập của máy mà phương án thành công hay không, có thể xem thêm phương án này trong mã nguồn chương trình. Ở đây, ta sẽ mô tả cài đặt cuối : Chương trình sử dụng cài đặt cuối qua hai hàm InjectCode, và EjectCode. InjectCode thực hiện việc sao chép dữ li ệu và trong tiến trình của cửa sổ SAS. Các dữ liệu này là : InjectFunc, “khung” thực thi của tiểu trình, GetSASWnd, tìm handle của cửa sổ SAS, SASWindowProc, hàm window procedure của lớp con kế thừa, INJDATA, các dữ liệu đầu vào. Hàm InjectCode int InjectCode () Bỏ qua các chi tiết rườm rà về kỹ thuật (cấp phát bộ nhớ bên tiến trình ở xa, kỹ thuật lấy vùng nhớ …) thì hàm InjectCode làm những động tác sau: o Lấy đị a chỉ hàm FindWindowA trong DLL USER32.DLL. o Mở tiến trình winlogon.exe với truy cập toàn quyền. o Sao chép dữ liệu INJDATA với khởi tạo gồm tên lớp "SAS Window class", tên cửa sổ "SAS window", địa chỉ hàm FindWindowA vào tiến trình ở xa. 108 o Sao chép hàm GetSASWnd vào trong tiến trình ở xa. o Tạo tiểu trình thực hiện việc tìm kiếm handle của cửa sổ SAS. o Nếu thành công, sẽ trả về handle cửa sổ SAS. o Sao chép nội dung hàm SASWndProc vào trong tiến trình ở xa. o Sao chép dữ liệu INJDATA với khởi tạo gồm địa chỉ hàm SetWindowLong (tùy theo tiến trình ở xa có sử dụng Unicode hay không mà sẽ chép tương ứng hàm dạng SetWindowLongA hay SetWindowLongW), CallWindowProc (tùy theo tiến trình ở xa có sử dụng Unicode hay không mà sẽ chép tương ứng hàm dạng CallWindowProcA hay CallWindowProcW), SASWndProc. o Trong SASWndProc, cần sử dụng dữ liệu trong INJDATA nhưng đây là một hàm callback nên tham số đầu vào không thể tùy biến, ta không thể truyền tường minh dữ liệu này. Vì vậy, ở đây, ta đã biết được địa chỉ của dữ liệu đầu vào INJDATA, và cả nội dung hàm SASWndProc đã được ghi vào vùng nhớ bên tiến trình ở xa, ta phải thực hiện động tác ghi trực tiếp giá trị biến nội tại sẽ lưu địa chỉ dữ liệu đầu vào INJDATA, bằng cách tìm trong vùng nhớ ở xa đã ghi nội dung hàm SASWndProc từng DWORD một. Dĩ nhiên biến nội tại này đã lưu một giá trị đặc biệt để có thể tìm ra. o Sao chép nội dung hàm InjectFunc o Tạo tiểu trình thực hiện nộ i dung hàm InjectFunc: dùng SetWindowLong thay window procedure mới. o Nếu thành công, công việc hoàn tất. Hàm InjectFunc Chức năng: tạo lớp con kế thừa, thay đổi hàm window procedure mới cho cửa sổ SAS. static DWORD WINAPI InjectFunc (INJDATA *pData) Hàm window procedure mới chính là SASWindowProc. Ta không thể lấy dữ liệu từ tiến trình ở xa (ví dụ như truy cập hàm SetWindowLong…) nên mọi dữ liệu đầu vào phải chuẩn bị sẵn và “chích” vào tiến trình, tạ i đây, lần lượt các hàm sẽ 109 sử dụng các dữ liệu này. Ở đây, InjectFunc sử dụng địa chỉ hàm SetWindowLong trong INJDATA Ý nghĩa tham số: pData: dữ liệu đầu vào, sẽ được giải thích ở phần sau. Hàm GetSASWnd Chức năng :lấy handle của cửa sổ SAS. static HWND WINAPI GetSASWnd (INJDATA *pData) Hàm SASWindowProc LRESULT CALLBACK SASWindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) Nếu đến đây mọi việc “đột nhập” đều suôn sẻ, các công việc sau đây sẽ được thực hiện tiếp trong đoạn mã vừa sao chép (là nội dung các hàm nêu ở trên, các bước sau đều thực hiện trong không gian địa chỉ ảo của tiến trình ở xa): • Lấy handle của cửa sổ SAS : hSASWnd = FindWindow("SAS Window class", "SAS window"); FindWindow là một hàm API khá hữu ích, được dùng để tìm handle của các cửa sổ top-level nếu biết tên cửa sổ và tên lớp. • Tạo lớp con kế thừa window procedure của cửa sổ SAS: SetWindowLong(hSASWnd, GWL_WNDPROC, NewSASWindowProc); • Trong NewSASWindowProc(), bắt thông điệp WM_HOTKEY và trả về 1 cho tổ hợp phím Ctrl – Alt – Del. LRESULT CALLBACK NewSASWindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { if (uMsg == WM_HOTKEY) { // Ctrl+Alt+Del if (lparam == MAKELONG(MOD_CONTROL | MOD_ALT, VK_DELETE)) return 1; 110 } return CallWindowProc(OldSASWindowProc, hWnd, wParam, lParam); } Hình 3-9 Màn che mouse và bàn phím [...]... danh sách các ứng dụng đang chạy: Trong quá trình thực hiện phần mềm, có một yêu cầu quản trị hệ thống là người quản trị muốn biết tại thời điểm hiện tại, người dùng đang mở những ứng dụng gì Người quản trị có thể xem danh sách các ứng dụng đó, đồng thời có thể thay đổi bằng cách thêm (mở một ứng dụng mới), bớt (tắt một ứng dụng đang chạy) Yêu cầu này đòi hỏi cần phải tìm hiểu cơ chế quản lý cửa sổ... lại EWX_REBOOT máy Tiến trình gọi phải có đặc quyền SE_SHUTDOWN_NAME 123 Shutdown hệ thống ở thời điểm an toàn nhưng không tắt máy Tiến trình EWX_SHUTDOWN gọi phải có đặc quyền SE_SHUTDOWN_NAME Bảng 3-4 Giá trị cờ hiệu Tham số tùy chọn : Giá trị Ý nghĩa Ép các tiến trình kết thúc Cờ hiệu này có thể làm ứng dụng mất dữ liệu EWX_FORCE Windows XP: Nếu máy bị khóa và cờ không đặct, tiến trình shutdown... như thế để tương thích ngược với các ứng dụng 16-bit cũ Hình 3-1 1 Mở một ứng dụng 3.4 Điều khiển máy tính từ xa: Trong quá trình thực hiện phần mềm, có một yêu cầu quản trị hệ thống là người quản trị cần log out, restart và shutdown một máy tính hoặc các máy đang hoạt động Điều này có thể thực hiện thông qua các hàm API hệ thống của Windows nhưng trước hết, ta cần phải biết thêm cơ chế đăng nhập của hệ... dụng vào chương trình: (int)ShellExecute(NULL, "open", lpFile, lpParam, lpPath, SW_SHOW); Với lpFile, lpParam, lpPath lần lượt là các giá trị lpFile, lpParameters, lpDirectory đã giải thích ở trên Lưu ý rằng, ta phải ép kiểu “(int)” khi lấy kết quả vì nguyên hàm của hàm có trị trả về là HINSTANCE Thực chất, kiểu trị trả về như thế để tương thích ngược với các ứng dụng 16-bit cũ Hình 3-1 1 Mở một ứng... Ngược lại, hàm EnumWindows lại có nhược điểm nhỏ là lấy dư các cửa sổ của hệ thống Các cửa sổ này không phải là các cửa sổ chúng ta cần, vì vậy ta phải có các thao tác loại bỏ chúng đi 3.3.3 Lấy danh sách các ứng dụng đang chạy: Ta chỉ cần viết một hàm gọi ngược thực hiện các công việc sau: o Nếu là cửa sổ gọi hàm EnumWindows, bỏ qua o Nếu là tiểu trình, bỏ qua o Nếu là cửa sổ ẩn, bỏ qua o Nếu là cửa sổ... nó SW_SHOW Hiện cửa sổ theo kích thước mặc định của nó SW_SHOWDEFAULT Đặt trạng thái mặc định của cửa sổ khi mở là hiện ra SW_SHOWMAXIMIZED Hiện và phóng to hết cỡ cửa sổ SW_SHOWMINIMIZED Hiện và thu nhỏ cửa sổ SW_SHOWMINNOACTIVE Thu nhỏ cửa sổ nhưng không kích hoạt nó SW_SHOWNA Hiện cửa sổ như trạng thái mà nó đã quy định SW_SHOWNOACTIVATE Hiện cửa sổ nhưng không kích hoạt nó SW_SHOWNORMAL Hiện và kích... năng : thực hiện log out, restart, shutdown BOOL ExitWindowsEx( UINT uFlags, DWORD dwReason ); Ý nghĩa tham số: [in] uFlags: cờ hiệu, là tổ hợp những giá trị sau: Giá trị EWX_LOGOFF Ý nghĩa Đóng tất cả các cửa sổ và đăng xuất người dùng Shutdown hệ thống và tắt máy Hệ EWX_POWEROFF thống phải hỗ trợ tính năng tắt máy Tiến trình gọi phải có đặc quyền SE_SHUTDOWN_NAME Shutdown hệ thống và khởi động lại... Ở đây, chỉ có điểm lưu ý nhỏ là ứng dụng chạy nên nêu rõ đường dẫn tuyệt đối Khi ta sử dụng đường dẫn tương đối, chẳng hạn “control.exe”, hệ điều hành sẽ dò tìm ứng dụng trong: Nơi chứa chương trình ứng dụng Thư mục hiện hành Thư mục system/system32 Thư mục Windows Các thư mục liệt kê trong biến môi trường PATH Vì vậy, có thể ứng dụng không thể được kích hoạt Hàm ShellExecute: 1 15 Chức năng: thực hiện. .. Cài đặt : Áp dụng các hàm API trên để thực hiện các công việc đề ra ở 3.4.1.2 Phân tích: BOOL CShutdownClient::ShutdownSystem(int iOption) Hàm có tác dụng thực hiện shutdown, restart, log out trong một khoảng thời gian xác định Có một lưu ý nhỏ là trong quá trình làm phần mềm, ta gặp rắc rối là khi thực thi thành công hàm ShutdownSystem, ta vẫn không chắc là thao tác ta yêu cầu trên máy khách có thành... XP: Nếu máy bị khóa và cờ không đặct, tiến trình shutdown sẽ thất bại Ép các tiến trình kết thúc nếu chúng bỏ qua thông điệp yêu cầu kết thúc thông WM_QUERYENDSESSION EWX_FORCEIFHUNG thường hay WM_ENDSESSION cờ sẽ bỏ qua nếu đã có EWX_FORCE Windows NT and Windows Me/98/ 95: không hỗ trợ Bảng 3 -5 Giá trị cờ hiệu tùy chọn dwReason: lý do shutdown, xem thêm trong MSDN để biết chi tiết Giá trị trả về: [out] . hỏi các lập trình viên cần phải lập trình cực kỳ cẩn thận các đọan mã mà họ sẽ “chích” vào tiến trình ở xa. Mọi hành động “chích” lầm sẽ dẫn đến hậu quả cực kỳ nguy hiểm như crash chương trình. suôn sẻ, các công việc sau đây sẽ được thực hiện tiếp trong đoạn mã vừa sao chép (là nội dung các hàm nêu ở trên, các bước sau đều thực hiện trong không gian địa chỉ ảo của tiến trình ở xa):. Hình 3-1 1 Mở một ứng dụng 3.4 Điều khiển máy tính từ xa: Trong quá trình thực hiện phần mềm, có một yêu cầu quản trị hệ thống là người quản trị cần log out, restart và shutdown một máy tính

Ngày đăng: 07/08/2014, 05:21

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w