653
Chương 17: Sự hòa hợp với môi trường Windows
icrosoft .NET Framework được thiết kế sao cho có thể chạy trên nhiều hệ điều
hành khác nhau, nâng cao tính khả chuyển của mã lệnh (code mobility) và đơn
giản hóa việc tích hợp xuyên-nền (cross-platform integration).
M
Hiện tại, .NET Framework có thể chạy trên các hệ điều hành: Microsoft Windows, FreeBSD,
Linux, và Mac OS X. Tuy nhiên, nhiều bản hiện thực vẫn chưa hoàn chỉnh hay chưa được chấp
nhận rộng rãi. Microsoft Windows hiện là hệ điều hành mà .NET Framework được cài đặt
nhiều nhất. Do đó, các mục trong chương này tập trung vào các tác vụ đặc trưng cho hệ điều
hành Windows, bao gồm:
Lấy các thông tin môi trường Windows (mục 17.1 và 17.2).
Ghi vào nhật ký sự kiện Windows (mục 17.3).
Truy xuất Windows Registry (mục 17.4).
Tạo và cài đặt dịch vụ Windows (mục 17.5 và 17.6).
Tạo shortcut trên Desktop hay trong Start menu của Windows (mục 17.7).
Phần lớn các chức năng được thảo luận trong chương này được CLR bảo vệ
bằng các quyền bảo mật truy xuất mã lệnh (Code Access Security). Xem chương
13 về bảo mật truy xuất mã lệnh, và xem tài liệu .NET Framework SDK về các
quyền cần thiết để thực thi từng bộ phận.
1.
1.
Truy xu t thông tin môi tr
ng
ấ
ườ
Truy xu t thông tin môi tr
ng
ấ
ườ
Bạn cần truy xuất các thông tin về môi trường thực thi mà ứng dụng đang chạy
trong đó.
Sử dụng các thành viên của lớp
System.Environment
.
Lớp
Environment
cung cấp một tập các thành viên tĩnh dùng để lấy (và trong một số trường
hợp, để sửa đổi) thông tin về môi trường mà một ứng dụng đang chạy trong đó. Bảng 17.1 mô
tả các thành viên thường dùng nhất.
Bảng 17.1 Các thành viên thường dùng của lớp Environment
Thành viên
Mô tả
Thuộc tính
CommandLine
Lấy chuỗi chứa dòng lệnh thực thi ứng dụng hiện tại,
gồm cả tên ứng dụng; xem chi tiết ở mục 1.5.
CurrentDirectory
Lấy và thiết lập chuỗi chứa thư mục hiện hành của
ứng dụng. Ban đầu, thuộc tính này chứa tên của thư
mục mà ứng dụng đã chạy trong đó.
HasShutdownStarted
Lấy một giá trị luận lý cho biết CRL đã bắt đầu tắt,
hoặc miền ứng dụng đã bắt đầu giải phóng hay chưa.
MachineName
Lấy chuỗi chứa tên máy.