Xây dựng chương trình quản lý phòng máy - pdf 16

Download miễn phí Luận văn Xây dựng chương trình quản lý phòng máy



Có một sốdữliệu vềhệthống mà chúng ta khi cần truy cập trực tiếp sẽrất
khó khăn, ví dụnhưcó bao nhiêu font chữtrên hệthống ?, có bao nhiêu cửa sổ
đang họat động trên hệthống ?. vì các dữliệu dạng này đều do hệthống nắm giữ,
và hệthống không muốn chúng ta đểý nhiều vềchi tiết quản lý của nó. Do đó, hệ
điều hành Windows cung cấp một sốcác hàm liệt kê sẽgiải đáp những thắc mắc
trên của chúng ta. Vấn đềcòn lại là hệthống không biết chúng ta sẽxửlý nhưthế
nào với những dữliệu mà nó cung cấp vì dữliệu dạng này không được tường minh
(có thểkhông có hay có rất nhiều), hệthống phải kiểm tra và trảvềtừng thành
phần dữliệu một
Câu trảlời là hệ điều hành Windows sẽcung cấp một cơchếgọi ngược
(callback). Nói một cách đơn giản, chúng ta sẽthông báo với hệthống rằng khi hệ
thống cung cấp các dữliệu mà ta yêu cầu thì hãy xửlý theo những công việc mà ta
đềra. Hàm mà chứa các công việc ta giao cho hệthống làm được gọi là hàm gọi
ngược (callback function).



Để tải bản Đầy Đủ của tài liệu, xin Trả lời bài viết này, Mods sẽ gửi Link download cho bạn sớm nhất qua hòm tin nhắn.
Ai cần download tài liệu gì mà không tìm thấy ở đây, thì đăng yêu cầu down tại đây nhé:
Nhận download tài liệu miễn phí

Tóm tắt nội dung tài liệu:

thao tác sẽ thất bại.
NULL : Các phiên bản trước Windows 2000: tên thao tác mặc định
quy định trong registry. Nếu không, thao tác “open” sẽ được dùng.
Các phiên bản từ Windows 2000: tên thao tác mặc định quy
định trong registry. Nếu không, thao tác “open” sẽ được dùng. Nếu vẫn không
được, hệ điều hành sẽ dùng thao tác đầu tiên đăng ký vào danh sách trong registry.
lpFile: tên tập tin hay thư mục.
117
lpParameters : tham số dành cho lpFile nếu lpFile là một tập tin thực thi.
Nếu lpFile là một tập tin văn bản, lpParameters nên đặt là NULL.
lpDirectory : đường dẫn tuyệt đối.
nShowCmd :
SW_HIDE
Giấu cửa sổ.
SW_MAXIMIZE
Phóng to hết cỡ cửa sổ.
SW_MINIMIZE
Thu nhỏ cửa sổ.
SW_RESTORE
Phục hồi cửa sổ về kích thước mặc định của 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 hoạt cửa sổ.
Giá trị trả về:
118
[out]
Nếu thành công, trả về giá trị lớn hơn 32.
Nếu thất bại, trả lỗi.
Áp 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-11 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 hay 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 biết thêm cơ chế đăng nhập của hệ điều hành
Windows.
119
3.4.1 Cơ chế đăng nhập:
3.4.1.1 Winlogon:
Cơ chế đăng nhập của Windows, Winlogon được thiết kế theo mô hình đăng
nhập tương tác gồm 3 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. Để biết thêm về
GINA, xem Phụ lục GINA stub – kỹ thuật xây dựng.
Quá trình đăng nhập được mô tả như sau:
Hình 3-12 Quá trình đăng nhập
* thẻ bài truy cập (access token):
Một thẻ bài truy cập chứa đựng thông tin bảo mật của session đăng nhập. Hệ
thống tạo thẻ bài khi người dùng đăng nhập, và mỗi tiến trình thực thi dưới quyền
của người dùng đều có một bản sao của thẻ bài. Thẻ bài xác định người dùng, nhóm
người dùng và đặc quyền của người dùng. Hệ thống dùng thẻ bài để kiểm soát việc
truy cập đến các đối tượng bảo mật và khống chế các hoạt động liên quan đến hệ
Người
dùng
đăng
nhập hệ
thống
Hệ thống
cấp một
thẻ bài truy
cập (access
token) cho
người dùng
Người
dùng sử
dụng tài
nguyên hệ
thống
Dựa vào thẻ
bài, hệ thống
quyết định
xem người
dùng có được
sử dụng tài
nguyên hay
không.
Người dùng
thóat khỏi hệ
thống
Hệ thống
chấp nhận
và hủy thẻ
bài
120
thống của người dùng. Tùy thuộc vào đặc quyền của người dùng, mà mức độ khống
chế cao hay thấp. Chẳng hạn, quản trị viên có toàn quyền đối với hệ thống.
3.4.1.2 Phân tích:
Vậy việc ta phải làm là :
• Lấy thẻ bài của người dùng.
• Với thẻ bài, kiểm tra xem người dùng có đặc quyền log out, restart,
shutdown hay không.
• Nếu có, bật đặc quyền lên (cho phép các tiến trình sử dụng đặc quyền để
thực hiện thao tác log out, restart, hay shutdown trên hệ thống).
• Nếu thành công. công việc hoàn tất.
3.4.2 Các hàm API hệ thống được sử dụng:
3.4.2.1 OpenProcessToken
Chức năng : mở thẻ bài truy cập của tiến trình. khi biết handle.
BOOL OpenProcessToken(
HANDLE ProcessHandle,
DWORD DesiredAccess,
PHANDLE TokenHandle
);
Ý nghĩa tham số:
[in]
ProcessHandle : handle của tiến trình.
DesiredAccess : quyền truy cập yêu cầu.
[out]
TokenHandle : handle của thẻ bài.
Giá trị trả về:
[out]
Nếu thành công, trả về khác 0.
121
Nếu thất bại, trả về 0. Gọi GetLastError để biết lỗi.
3.4.2.2 LookupPrivilegeValue
Chức năng : lấy số định dạng cục bộ duy nhất (LUID). LUID là một giá trị
64 bit có ý nghĩa duy nhất trên hệ điều hành mà phát sinh ra số cho đến khi hệ thống
khởi động lại.
BOOL LookupPrivilegeValue(
LPCTSTR lpSystemName,
LPCTSTR lpName,
PLUID lpLuid
);
Ý nghĩa tham số:
lpSystemName : tên hệ thống mà đặc quyền sẽ được lấy.
lpName : tên đặc quyền.
[out]
lpLuid : LUID của hệ thống.
Giá trị trả về
[out]
Nếu thành công, trả về khác 0.
Nếu thất bại, trả về 0. Để biết lỗi, gọi GetLastError.
3.4.2.3 AdjustTokenPrivileges
Chức năng: bật hay tắt đặc quyền của một thẻ bài truy cập, phải có truy cập
TOKEN_ADJUST_PRIVILEGES.
BOOL AdjustTokenPrivileges(
HANDLE TokenHandle,
BOOL DisableAllPrivileges,
PTOKEN_PRIVILEGES NewState,
DWORD BufferLength,
PTOKEN_PRIVILEGES PreviousState,
122
PDWORD ReturnLength
);
Ý nghĩa tham số:
[in]
TokenHandle : handle của thẻ bài cần bật/tắt đặc quyền.
DisableAllPrivileges : TRUE, tắt tất cả các đặc quyền.
FALSE, chỉnh sửa các đặc quyền dựa trên thông tin của NewState.
NewState : trỏ đến cấu trúc TOKEN_PRIVILEGES:
typedef struct _TOKEN_PRIVILEGES {
DWORD PrivilegeCount; // số đặc quyền
LUID_AND_ATTRIBUTES Privileges[ANYSIZE_ARRAY]; // mảng các
LUID
} TOKEN_PRIVILEGES, *PTOKEN_PRIVILEGES;
trong đó cấu trúc LUID_AND_ATTRIBUTES :
typedef struct _LUID_AND_ATTRIBUTES {
LUID Luid; // số LUID
DWORD Attributes.; // thuộc tính của LUID
} LUID_AND_ATTRIBUTES,
*PLUID_AND_ATTRIBUTES
với Attributes tổ hợp các giá trị sau:
Giá trị Ý nghĩa
SE_PRIVILEGE_ENABLED Đặc quyền bật.
SE_PRIVILEGE_REMOVED Gở bỏ đặc quyền.
None Tắt đặc quyền.
Bảng 3-3 Giá trị của biến Attributes
BufferLength : kích thước theo byte của vùng đệm chứa PreviousState. Giá
trị này là 0 nếu PreviousState là NULL.
123
PreviousState : tương tự NewState, nhưng cho biết trạng thái trước của đặc
quyền cần chỉnh sửa.
ReturnLength : trả về kích thước thật của vùng đệm chứa PreviousState.
NULL nếu PreviousState là NULL.
Giá trị trả về:
[out]
Nếu thành công, trả về khác 0
Nếu thất bại, trả về 0. Gọi GetLastError để biết lỗi.
3.4.2.4 ExitWindowsEx
Chức 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ị Ý nghĩa
EWX_LOGOFF
Đóng tất cả các cửa sổ và đăng xuất
người dùng
EWX_POWEROFF
Shutdown hệ thống và tắt máy. Hệ
thống phải hỗ trợ chức năng tắt máy.
Tiến trình gọi phải có đặc quyền
SE_SHUTDOWN_NAME.
EWX_REBOOT
Shutdown hệ thống và khởi động lại
máy. Tiến trình gọi phải có đặc quyền
SE_SHUTDOWN_NAME...
Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status