Tài liệu Đề tài Xây dựng ứng dụng dưới dạng dịch vụ chạy trên Windows Server 2003 domain controller để shutdown các máy trong doamin theo thời gian định trước: KH
OA
C
NT
T –
Đ
H
KH
TN
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN
KHOA CÔNG NGHỆ THÔNG TIN
BỘ MÔN MẠNG MÁY TÍNH & VIỄN THÔNG
NGUYỄN QUỐC HÙNG 0012043
TRẦN THỊ HOÀI THANH 0012657
XÂY DỰNG ỨNG DỤNG DẠNG DỊCH VỤ
CHẠY TRÊN WINDOWS SERVER 2003
DOMAIN CONTROLLER ĐỂ SHUTDOWN
CÁC MÁY TRONG DOMAIN THEO THỜI
GIAN ĐỊNH TRƯỚC
LUẬN VĂN CỬ NHÂN TIN HỌC
NGƯỜI HƯỚNG DẪN: THẦY NGUYỄN MINH TUẤN
NIÊN KHÓA 2000-2004
KH
OA
C
NT
T –
Đ
H
KH
TN
LỜI CẢM ƠN
Để thực hiện và hoàn thành tốt bài luận văn tốt nghiệp này, chúng em đã
nhận được sự giúp đỡ và hướng dẫn rất tận tình của các thầy cô và các bạn thuộc
khoa Công Nghệ Thông Tin trường Đại học Khoa Học tự Nhiên TP.Hồ Chí Minh.
Chúng em xin cảm ơn các thầy cô thuộc khoa Công Nghệ Thông Tin đã cung
cấp cho chúng em các kiến thức vô cùng quý báu và cần thiết trong suốt thời gian
học tập tại trường để chúng em có thể thực hiện và hoàn thành bài luận văn tốt
nghiệp này.
Đặc biệt, chúng em chân thành cảm...
64 trang |
Chia sẻ: hunglv | Lượt xem: 1204 | Lượt tải: 0
Bạn đang xem trước 20 trang mẫu tài liệu Đề tài Xây dựng ứng dụng dưới dạng dịch vụ chạy trên Windows Server 2003 domain controller để shutdown các máy trong doamin theo thời gian định trước, để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
KH
OA
C
NT
T –
Đ
H
KH
TN
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN
KHOA CÔNG NGHỆ THÔNG TIN
BỘ MÔN MẠNG MÁY TÍNH & VIỄN THÔNG
NGUYỄN QUỐC HÙNG 0012043
TRẦN THỊ HOÀI THANH 0012657
XÂY DỰNG ỨNG DỤNG DẠNG DỊCH VỤ
CHẠY TRÊN WINDOWS SERVER 2003
DOMAIN CONTROLLER ĐỂ SHUTDOWN
CÁC MÁY TRONG DOMAIN THEO THỜI
GIAN ĐỊNH TRƯỚC
LUẬN VĂN CỬ NHÂN TIN HỌC
NGƯỜI HƯỚNG DẪN: THẦY NGUYỄN MINH TUẤN
NIÊN KHÓA 2000-2004
KH
OA
C
NT
T –
Đ
H
KH
TN
LỜI CẢM ƠN
Để thực hiện và hoàn thành tốt bài luận văn tốt nghiệp này, chúng em đã
nhận được sự giúp đỡ và hướng dẫn rất tận tình của các thầy cô và các bạn thuộc
khoa Công Nghệ Thông Tin trường Đại học Khoa Học tự Nhiên TP.Hồ Chí Minh.
Chúng em xin cảm ơn các thầy cô thuộc khoa Công Nghệ Thông Tin đã cung
cấp cho chúng em các kiến thức vô cùng quý báu và cần thiết trong suốt thời gian
học tập tại trường để chúng em có thể thực hiện và hoàn thành bài luận văn tốt
nghiệp này.
Đặc biệt, chúng em chân thành cảm ơn thầy Nguyễn Minh Tuấn đã tận tình
hướng dẫn và giúp đỡ chúng em trong suốt thời gian thực hiện đề tài.
Cuối cùng, chúng em xin cảm ơn gia đình cùng bạn bè đã tạo điều kiện, động
viên và giúp đỡ để chúng em đủ tự tin và nghị lực để thực hiện tốt đề tài.
Do giới hạn về mặt thời gian và kiến thức nên đề tài chắc chắn sẽ không
tránh khỏi những sai sót ngoài ý muốn. Chúng em rất mong nhận được sự thông
cảm và đóng góp ý kiến của quý thầy cô và các bạn.
Trân trọng kính chào.
Sinh viên thực hiện
Nguyễn Quốc Hùng
Trần Thị Hoài Thanh
KH
OA
C
NT
T –
Đ
H
KH
TN
Mục lục
MỤC LỤC
Trang
Phần 1: Mở Đầu
Chương 1: Đặt vấn đề và giới thiệu đề tài ............................................................. 1
1.1. Giới thiệu đề tài................................................................................... 1
2.1. Các chương trình đã có........................................................................ 2
Phần 2: Cơ sở lý thuyết
Chương 2: Tìm hiểu một số khái niệm liên quan đến đề tài................................... 4
2.1. Domain Controller ............................................................................... 4
2.2. Domain ................................................................................................ 5
2.3. Active Directory .................................................................................. 6
2.3.1. Active Directory là gì? ............................................................ 6
2.3.2. Lợi ích của Active Directory................................................... 6
2.4. Windows Server 2003 .......................................................................... 7
Chương 3: Tìm hiểu ứng dụng dạng dịch vụ ......................................................... 9
3.1. Tổng quan và các đặc điểm của ứng dụng dạng dịch vụ ....................... 9
3.2. Cơ chế hoạt động của các ứng dụng dạng dịch vụ .............................. 10
3.3. Tài khoản dịch vụ và mật mã tài khoản dịch vụ.................................. 11
3.4. Cách tạo một ứng dụng dịch vụ trong .NET Framework .................... 12
3.4.1. Các lớp chính trong việc tạo dịch vụ. .................................... 12
3.4.2. Tạo một ứng dụng dịch vụ đơn giản...................................... 14
3.5. Sự khác nhau giữa các ứng dụng dịch vụ và các ứng dụng .NET
Framework khác. ................................................................................................ 21
Chương 4: Tìm hiểu về WMI (Windows Management Instrument)..................... 23
4.1. Tổng quan về WMI............................................................................ 23
4.1.1. Khái niệm script và ngôn ngữ viết script ............................... 23
4.1.2. Tổng quan về WMI............................................................... 23
4.2. Kiến trúc WMI................................................................................... 25
KH
OA
C
NT
T –
Đ
H
KH
TN
Mục lục
4.2.1. Các tài nguyên được quản lý ................................................. 26
4.2.2. Cơ sở hạ tầng WMI............................................................... 26
4.2.2.1. Thư viện viết script WMI.......................................... 26
4.2.2.2. Kho lưu trữ CIM....................................................... 27
4.2.2.3. CIMOM.................................................................... 28
4.2.2.4. Các Provider ............................................................. 29
4.2.3. Phần tiêu thụ ......................................................................... 30
4.3. Ví dụ ứng dụng WMI đơn giản .......................................................... 30
4.4. Tìm hiểu Win32 Provider................................................................... 32
4.4.1. Các lớp mà Win32 Provider hỗ trợ........................................ 32
4.4.2. Lớp Win32_OperatingSystem............................................... 34
Chương 5: Tìm hiểu System.DirectoryServices................................................... 35
5.1. Tổng quan System.DirectoryServices................................................. 35
5.2. Cách sử dụng System.DirectoryServices ............................................ 36
5.2.1. Đưa System.DirectoryServices vào ứng dụng ....................... 36
5.2.2. Liên kết và sử dụng các đối tượng danh bạ............................ 37
5.2.2.1. Các đối tượng danh bạ .............................................. 37
5.2.2.2. Liên kết đến các đối tượng danh bạ........................... 38
Phần 3: Thiết kế và cài đặt ứng dụng.
Chương 6: Ứng dụng và các chức năng của ứng dụng......................................... 41
6.1. Giới thiệu chương trình ...................................................................... 41
6.2. Các lớp chính của chương trình.......................................................... 41
6.3. Lưu đồ họat động chính của ứng dụng ............................................... 42
6.4. Cách cài đặt và sử dụng ứng dụng...................................................... 44
Phần 4: Kết luận
Chương 7: Kết luận - Đánh giá - Hướng phát triển.............................................. 54
7.1. Kết luận và đánh giá .......................................................................... 54
7.2. Hướng phát triển ................................................................................ 56
Tài liệu tham khảo .............................................................................................. 57
KH
OA
C
NT
T –
Đ
H
KH
TN
Bảng hình vẽ và các chữ viết tắt
BẢNG HÌNH VẼ VÀ CÁC CHỮ VIẾT TẮT
Hình vẽ
Trang
Hình 3.1 ................................................................................................... 18
Hình 3.2 .................................................................................................. 19
Hình 3.3 ................................................................................................... 20
Hình 4.1 ................................................................................................... 25
Hình 4.2 .................................................................................................. 31
Hình 5.1 ................................................................................................... 36
Hình 5.2 ................................................................................................... 37
Hình 5.3 .................................................................................................. 38
Hình 6.1 ................................................................................................... 43
Hình 6.2 ................................................................................................... 44
Hình 6.3 ................................................................................................... 45
Hình 6.4 ................................................................................................... 46
Hình 6.5 ................................................................................................... 46
Hình 6.6 ................................................................................................... 47
Hình 6.7 ................................................................................................... 47
Hình 6.8 ................................................................................................... 48
Hình 6.9 ................................................................................................... 49
Hình 6.10 ................................................................................................. 51
Hình 6.11 ................................................................................................. 53
Chữ viết tắt
WS2K3 : Windows Server 2003
Win2K : Windows 2000
DC : Domain Controller
PDC : Primary Domain Controller
BDC : Backup Domain Controller
SCM : Service Controll Manager
WMI : Windows management Instrument
CIM : Common Information Model
CIMOM : Common Information Model Object Manager
KH
OA
C
NT
T –
Đ
H
KH
TN
Tóm tắt luận văn
TÓM TẮT LUẬN VĂN
Chương 1:
Đặt vấn đề và giới thiệu đề tài. Nêu lí do chọn, mục đích của đề tài. Phân
tích, đánh giá các chương trình đã có của các tác giả trong và ngoài nước có liên
quan đến đề tài. Mục tiêu chính mà đề tài tập trung nghiên cứu giải quyết.
Chương 2:
Giới thiệu một số khái niệm liên quan, cần thiết cho đề tài như: domain,
domain controller, dịch vụ danh bạ, Active Directory,….
Chương 3:
Tìm hiểu về ứng dụng dạng dịch vụ: thế nào là một ứng dụng dạng dịch vụ?
Các đặc điểm chính của nó là gì? Cơ chế hoạt động của dịch vụ như thế nào?. Và
cũng trong phần này chúng ta sẽ xem cách tạo một ứng dụng dạng dịch vụ trong
.NET Framework, từ đó rút ra sự khác nhau giữa các ứng dụng dịch vụ và các ứng
dụng .NET Framework khác.
Chương 4:
Làm quen với WMI (Windows management Instrument), một kỹ thuật cho
phép quản lý, tương tác với các thành phần cốt lõi bên trong hệ điều hành Windows.
Nắm được kiến trúc của WMI và cách sử dụng WMI trong ứng dụng như thế nào.
Cũng trong chương 4, các bạn sẽ được làm quen với lớp
Win32_OperatingSystem cùng với phương thức Win32_Shutdown được dùng để
gọi shutdown Windows.
Chương 5:
Tìm hiểu về System.DirectoryServices, một namespace trong .NET
Framework cho phép truy cập đến ActiveDirectory thông qua kỹ thuật .NET để lấy
về các thông tin mong muốn. Tại đây bạn sẽ được xem các ví dụ rất cụ thể, đặc biệt
là cách truy cập vào ActiveDirectory để lấy về các máy tính thuộc cùng domain.
KH
OA
C
NT
T –
Đ
H
KH
TN
Tóm tắt luận văn
Chương 6:
Giới thiệu về ứng dụng và chức năng của ứng dụng, lưu đồ họat động, các
lớp chính và cách thức chính đã được sử dụng để viết ứng dụng. Hướng dẫn cài đặt
và sử dụng ứng dụng.
Chương 7:
Kết luận, tự đánh giá và hướng phát triển của ứng dụng.
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 1: Đặt vấn đề và giới thiệu đề tài
1
Phần 1: Mở Đầu
Chương 1: Đặt vấn đề và giới thiệu đề tài
1.1. Giới thiệu đề tài
Ngày nay, để cùng hòa vào xu thế phát triển công nghệ thông tin của thế giới,
bộ mặt công nghệ thông tin của Việt Nam đang có những bước phát triển thật đáng
mừng. Người người dùng máy tính, nhà nhà dùng máy tính, các tổ chức, công ty cũng
đang bước từng bước tin học hóa dần hệ thống làm việc của mình, các trường học,
trung tâm tin học cũng đã, đang mọc lên ngày càng đông đúc,… kéo theo đó là hàng
loạt hệ thống mạng máy tính nhỏ có, vừa có, lớn có cũng ra đời. Và các lợi ích do
mạng máy tính đem lại thì có lẽ chúng ta không cần bàn thêm nữa bởi vì cả các bạn, cả
chúng tôi đều đã ít nhất một lần thấy được những lợi ích do mạng máy tính đem lại cho
chúng ta.
Có mạng máy tính tức là chắc chắn sẽ có người quản trị mạng, những người
chịu trách nhiệm chăm sóc, theo dõi, hồi phục,… “sức khỏe” cho mạng. Vậy mà bạn
có tưởng tượng được không, một công việc mang tính chất “nhàm chán” lặp đi lặp lại
hàng ngày lại được xem mặc nhiên là công việc của các quản trị viên. Công việc mà
chúng tôi đề cập đến ở đây không gì khác hơn là: việc kiểm tra và thực hiện shutdown
các máy trạm còn sót lại, hay có khi là phải shutdown tất cả các máy này vào cuối mỗi
ngày làm việc. Đồng ý là Microsoft đã hỗ trợ cho chúng ta một cách làm ít tốn công
hơn trên Windows nhưng thật sự thì tuy rằng ngồi một chỗ nhưng người quản trị vẫn
phải thực hiện thao tác mở, nhập, nhắp, chọn,… hàng ngày hàng ngày và hàng ngày.
Chính vì lý do này nên chúng tôi đã chọn đề tài: “xây dựng ứng dụng dưới dạng dịch
vụ chạy trên Windows Server 2003 domain controller để shutdown các máy trong
domain theo thời gian định trước” để làm bài luận tốt nghiệp cho mình.
Không chỉ giúp ích được cho các tổ chức, các người quản trị mạng có nhu cầu
quản lý các máy trong domain của mình mà nhu cầu của các cá nhân cho các máy tính
đơn cũng không kém phần cần thiết. Bạn đi vắng? bạn hay ngủ quên khi nghe nhạc?
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 1: Đặt vấn đề và giới thiệu đề tài
2
bạn cần đi học hay đi làm việc quan trọng vào một số ngày nhất định nhưng lại hay
quên vì mải say sưa cùng chiếc máy vi tính. Bạn chỉ cần hẹn giờ, máy sẽ shutdown
giúp bạn, bạn có thể đi, có thể ngủ,… bất kì lúc nào mà không cần phải quan tâm nhiều
đến việc mình đã tắt máy hay chưa. Chúng tôi sẽ giúp bạn làm điều đó!
1.2. Các chương trình đã có
Hiện tại đã có một số chương trình hẹn giờ tự động tắt máy trên thị trường phần
mềm Việt Nam, nhưng đa số các chương trình này có giao diện bằng tiếng nước Ngoài
(tiếng Anh) làm cho một số người mới làm quen với máy tính sẽ gặp không ít khó khăn
khi sử dụng. Và, một điều cũng không kém phần quan trọng nữa đó là phần lớn các
phần mềm này đòi hỏi phải có bản quyền, tức là phải có mua mới được sử dụng.
Nhưng với mức sống trung bình của người dân Việt Nam hiện nay thì chi phí để chi trả
cho vấn đề bản quyền này cũng là một vấn đề không nhỏ.
Ngoài ra, hệ điều hành Microsoft Windows cũng cung cấp cho người sử dụng
một công cụ dòng lệnh để thực hiện việc tắt máy. Muốn sử dụng bạn chỉ cần đánh lệnh
shutdown và kèm theo các tham số cho phù hợp với yêu cầu. Ví dụ:
shutdown /i : để hiển thị giao diện đồ họa giúp người dùng dễ dàng chọn máy
cũng như hành động muốn thực hiện.
shutdown /s : để shutdown máy cục bộ.
shutdown /s/m \\may1 : để shutdown máy ở xa có tên là “may1”,….
Nhìn chung thì công cụ này đã thực hiện tốt việc tắt máy cục bộ hay ở xa.
Nhưng nó vẫn còn một số hạn chế là không thể đặt được giờ hẹn cũng như giờ hẹn lặp,
tức là mỗi lần muốn tắt máy cục bộ hay máy từ xa, bạn đều phải thao tác bằng tay.
Còn về các chương trình hẹn giờ tự động tắt máy do chính người Việt viết thì
sau một thời gian tìm hiểu chúng tôi nhận thấy rằng: không có nhiều chương trình cho
vấn đề này, nổi bật nhất là chương trình ShutdownAlarm.
_ Ưu điểm của ShutdownAlarm:
+ Giải quyết được tương đối yêu cầu đặt ra là hẹn giờ để tắt máy.
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 1: Đặt vấn đề và giới thiệu đề tài
3
+ Miễn phí.
+ Mã nguồn mở.
_ Khuyết điểm của ShutdownAlarm:
+ Chỉ cho hẹn vào một thời điểm trong một ngày, tức là chúng ta không
thể hẹn giờ vào các ngày lặp lại. Ví dụ như mỗi ngày, mỗi thứ hay các thứ trong
tuần,..v…v..
+ Chỉ có thể hẹn giờ tắt máy cho máy cục bộ.
Do đó, trong đề tài này chúng tôi luôn cố gắng tập trung vào giải quyết các yêu
cầu chính mà chương trình cần có là:
_ Chạy được trên Windows 2003 server.
_ Shutdown được các máy trong cùng domain.
_ Đặt được thời gian shutdown linh hoạt hơn.
_ Có thể gọi chương trình bất cứ lúc nào, tại bất cứ máy nào (work-station hay
domain controller server) bằng phương tiện Remote Deskstop Connection.
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 2: Tìm hiểu một số khái niệm liên quan đến đề tài
4
Phần 2: Cơ sở lý thuyết
Chương 2: Tìm hiểu một số khái niệm liên quan đến đề tài
2.1. Domain Controller
Như chúng ta đã biết: nối mạng là tất cả những gì về chia sẻ dùng chung, nhưng
không phải vì vậy mà có thể “mở cửa” cho bất kì ai vào ra một cách tự do mà người
quản trị phải tạo ra các tài khoản người dùng và lưu trữ chúng ở một file nào đó để xác
minh và bảo đảm đúng quyền hạn truy cập của người dùng. Ở dạng đơn giản nhất, các
tài khoản người dùng bao gồm một cơ sở dữ liệu các tên người dùng và mật khẩu. NT
4 lưu trữ thông tin người dùng trong một tập tin tên là SAM nhưng Windows 2000
(Win2K) và Windows Server 2003 (WinS2K3) lưu trữ trong một tập tin tên là
NTDS.DIT. Dữ liệu trong NTDS.DIT được mã hóa phức tạp hơn trong SAM để đảm
bảo cho cơ sở dữ liệu an toàn hơn.
Nếu mạng của bạn có một server thì tập tin chứa các tài khoản người dùng sẽ
được lưu trữ ở đó, thế nhưng nếu mạng của bạn gồm nhiều server. Hầu hết các công ty
lớn đều phải xây dựng nhiều server và số server lên đến hàng chục hoặc hàng trăm
cũng không phải là hiếm (xét trên bình diện thế giới). Có phải chúng ta sẽ lưu trữ mỗi
bản sao hoàn chỉnh của NTDS.DIT trên mỗi server?. Thực tế thì:
● Thứ nhất: kích thước của NTDS.DIT có thể hơi bị lớn do đó chúng ta sẽ phải
tốn khá nhiều bộ nhớ để lưu trữ file này trong tất cả các server.
● Thứ hai: nếu các server được nối kết bởi những đường tốc độ chậm thì quá
trình cập nhật NTDS.DIT đến tất cả các server trên mạng sẽ có thể chiếm dụng nhiều
thời gian và dung lượng đường truyền.
● Thứ ba: chúng ta có thực sự cần phải tạo ra một “trận bão” sao chép tập tin
giữa các server trên mạng mỗi khi ai đó chỉ đơn giản là thay đổi mật khẩu của họ
chăng?
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 2: Tìm hiểu một số khái niệm liên quan đến đề tài
5
● Thứ tư: nếu chúng ta sao chép NTDS.DIT đến từng server một trong mạng,
rất có thể là có một vài server trong số đó bị hớ hênh, không được bảo vệ về mặt vật lý.
Như thế sẽ rất dễ dàng cho việc đánh cắp NTDS.DIT từ các máy đó.
Do đó, NTDS.DIT sẽ được đặt trên một nhóm nhỏ các server và các server này
sẽ đóng vai trò của logon server, đảm trách việc xác minh cho những server còn lại.
Những server này thường được gọi là domain controller.
Domain controller (DC) là một server chứng thực cho việc logon vào domain,
duy trì chính sách bảo mật và cơ sở dữ liệu của các tài khoản người dùng trong domain.
Hay nói một cách đơn giản hơn là: domain controller (DC) sẽ làm các công việc như:
kiểm tra sự hợp lệ của username và password, kiểm tra xem client này có phải là thành
viên trong domain của mình hay không, cập nhật thông tin cho nhau,…
Có hai lọai domain controller (DC):
● Primary domain controller (PDC): Trên một domain chỉ có một primary
domain controller duy nhất. Primary domain controller sẽ là DC đầu tiên nhất được tạo
ra và nó là “nhà kho” chính cho dữ liệu của domain.
● Backup domain controller (BDC): Trái lại với primary DC, trên một domain
có thể tồn tại nhiều backup DC. Backup DC Ngoài chức năng chính như tên gọi của nó
là backup dữ liệu từ primary DC thì backup DC cũng có thể chứng thực thông tin logon
của user và có thể được nâng cấp lên như primary DC khi cần thiết.
2.2. Domain
Domain là tập hợp những máy dùng chung cùng một danh sách các tài khoản
người dùng, tức cùng một NTDS.DIT. Các máy này cùng chia sẻ một cơ sở dữ liệu
danh bạ chung (common directory database). Cho nên, các máy trạm, các server, các
domain controller đều là những thành viên của cùng một domain. Mỗi domain có một
tên duy nhất và có các chính sách bảo mật cũng như các mối liên hệ bảo mật với các
domain khác của chính nó.
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 2: Tìm hiểu một số khái niệm liên quan đến đề tài
6
2.3. Active Directory
2.3.1 Active Directory là gì?
Dịch vụ danh bạ (directory service) là một “kho lưu trữ” có cấu trúc các thông
tin về người cũng như các tài nguyên trong một tổ chức. Dịch vụ danh bạ (directory
service) bao gồm cả nguồn thông tin danh bạ và dịch vụ làm cho các thông tin này có
giá trị và có thể dùng được. Dịch vụ danh bạ có thể tìm kiếm một đối tượng cho người
sử dụng ngay cả khi chỉ được cung cấp một thuộc tính bất kì trong tất cả các thuộc tính
của đối tượng đó. Trong mạng WS2K3, dịch vụ danh bạ là Active Directory.
Active Directory là một dịch vụ danh bạ (directory service) lưu trữ thông tin về
các đối tượng trong mạng như các tài khoản người dùng, các máy tính,…. và làm cho
các thông tin này có giá trị đối với người dùng và các người quản trị mạng. Nó cung
cấp cho các người quản trị mạng một cái nhìn trực quan, có cấp bậc về mạng, đơn giản
hóa công việc quản trị các đối tượng mạng. Khi bạn cài đặt Active Directory lên máy
tính đang chạy WS2K3, máy tính đó sẽ trở thành domain controller cho một domain.
2.3.2. Các lợi ích của Active Directory
Active Directory có các khả năng sau:
● Cho phép người dùng và các ứng dụng truy cập thông tin về các đối tượng.
Thông tin này được lưu trữ dưới dạng các thuộc tính của đối tượng. Bạn có thể tìm
kiếm đối tượng dựa trên bất kì thuộc tính nào của nó.
● Làm cho các giao thức và topology mạng vật lý trong suốt. Tức là, người
dùng trên mạng có thể truy cập bất kì tài nguyên nào (VD:máy in) mà không cần biết
tài nguyên này ở đâu và nó được kết nối vật lý đến mạng như thế nào.
● Cho phép lưu trữ một số lượng rất lớn các đối tượng. Active Directory có thể
mở rộng khi tổ chức của bạn phát triển. Ví dụ, một danh bạ (directory) có thể mở rộng
từ một server đơn với vài trăm đối tượng thành hàng ngàn server với hàng triệu đối
tượng.
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 2: Tìm hiểu một số khái niệm liên quan đến đề tài
7
● Có thể lập trình dễ dàng. Active Directory có thể được truy cập và quản trị
một cách tự động bằng cách sử dụng Active Directory Service Interfaces (ADSI) API,
Lightweight Directory Access Protocol (LDAP) API hay System.DirectoryServices
namespace.
Và còn rất nhiều lợi ích mà chúng ta có thể tìm thấy được ở Active Direcory,
đặc biệt là với WS2K3, sau khi đã được Microsoft phát triển và bổ sung thêm nhiều
tính năng mới từ Win2K. Nhưng trong phạm vi phần này chúng tôi không đề cập nhiều
đến vấn đề này, để tìm hiểu thêm bạn có thể xem thêm tại Webside:
www.microsoft.com.
2.4. Windows Server 2003
Như tất cả chúng ta đều đã biết, trên thị trường phần mềm hiện nay có rất nhiều
hệ điều hành, bao gồm Unix, Linux, Novell Netware, MVS của IBM, VMS của
Compaq,… Nhưng thật sự chỉ có một hệ điều hành đang chiếm lĩnh thị trường, đó
chính là Microsoft Windows. Theo bộ số liệu thống kê mới nhất thì 43% server trên thế
giới sử dụng Microsoft Windows, hàng trăm triệu người đã biết và quá quen thuộc với
cách làm việc trên Windows. Và thực tế một lần nữa, Windows lại tiếp tục khẳng định
lại vị trí của mình với phiên bản mới nhất Windows Server 2003 (WS2K3).
Với WS2K3, chúng ta có bốn phiên bản chủ lực là:
● Windows Server 2003, Web Edition: được thiết kế riêng cho các máy chủ
web. Mặc dù các máy chạy Windows Server 2003, Web Edition có thể là thành viên
của một domain nhưng bạn không thể chạy Active Directory trên Windows Server
2003, Web Edition.
● Windows Server 2003, Standard Edition: sử dụng cho các doanh nghiệp
nhỏ, các nhóm làm việc để làm domain controller hay làm máy chủ.
● Windows Server 2003, Enterprise Edition: sử dụng trong các tổ chức vừa
và lớn để làm các máy chủ ứng dụng, các domain controller,…. Đây là phiên bản được
phát triển từ Windows 2000 Advanced Server.
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 2: Tìm hiểu một số khái niệm liên quan đến đề tài
8
● Windows Server 2003, Datacenter Edition: cho các cơ sở dữ liệu lớn nhất,
các ứng dụng doanh nghiệp quy mô nhất. Datacenter Edition có thể cho phép bạn thực
hiện được kiểu quản trị hệ thống mà nhiều năm trước đây người ta làm được trên máy
mainframe.
Với bốn ấn bản chuyên dụng cho các mục đích, quy mô và chi phí khác nhau
nên người sử dụng sẽ linh hoạt hơn trong việc lựa chọn phiên bản phù hợp với mình
nhất. Trong phạm vi đề cập dĩ nhiên là chúng ta sẽ không xét đến hai phiên bản Web
Edition và Datacenter Edition.
Có rất nhiều điều để nói về WS2K3, các điểm cải tiến, các chức năng cũng như
các hỗ trợ mới. Nhưng trong phần này chúng tôi chỉ giới thiệu sơ lược về hệ điều hành
WS2K3 thôi, do đó chúng ta sẽ không tìm hiểu sâu về bản chất WS2K3. Nhưng chúng
tôi cũng muốn các bạn biết rằng WS2K3 quả thật là một hệ điều hành với nhiều mới
mẻ và thú vị. Chẳng hạn như, với WS2K3 bạn có thể thực hiện được khoảng 98% công
việc quản trị bằng dòng lệnh, bạn có thể đặt số người trong một nhóm làm việc là tùy ý
(ở Win2K, bạn không thể đặt nhiều hơn 5.000 người trong một nhóm), bạn có thể chạy
các chương trình .NET một cách thoải mái bởi vì WS2K3 đã được tích hợp .NET
Framework, bạn có thể ..v..v.. Và còn một điểm mới mẻ nữa mà chúng ta không thể
không nhắc đến đó là: WS2K3 là hệ điều hành cho máy chủ 64-bit lần đầu tiên từ
Microsoft. Với một hệ điều hành 64-bit, đặc biệt là trên máy chủ, các ứng dụng của bạn
sẽ thi hành các yêu cầu một cách nhanh chóng, dễ dàng và đáng tin cậy hơn. Từ đó kéo
theo một loạt các lợi ích khác cho các doanh nghiệp, công ty, tổ chức có quy mô lớn và
rất lớn.
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 3: Tìm hiểu ứng dụng dạng dịch vụ.
9
Chương 3: Tìm hiểu ứng dụng dạng dịch vụ
3.1. Tổng quan và các đặc điểm của ứng dụng dạng dịch vụ
Dịch vụ (service) là một phần quan trọng trong hệ điều hành Microsoft
Windows, trước đây được biết đến như các NT service. Nó là một ứng dụng có thể giao
tiếp và được quản trị bởi trình quản lý điều khiển dịch vụ (Service Control Manager _
SCM). Một dịch vụ có thể:
● Tự khởi động khi máy tính khởi động.
● Chạy ngay cả khi không có người dùng nào đăng nhập vào máy tính.
● Hồi đáp các yêu cầu mà không cần sự can thiệp của con người.
● Được cấu hình để khởi động lại một cách tự động nếu việc khởi động ban đầu
thất bại và không hiển thị bất cứ giao diện người dùng nào.
Các đặc điểm này làm cho các dịch vụ thật sự lý tưởng để sử dụng trên máy chủ
hay trên bất cứ nơi đâu bạn cần các chức năng chạy lâu dài, các chức năng không can
thiệp với người dùng khác. Dịch vụ không những quan trọng để máy tính vận hành mà
còn làm cho việc quản trị hệ thống trở nên dễ dàng và chấp nhận được. Ví dụ, không có
dịch vụ DHCP (Dynamic Host Configuration Protocol: dịch vụ cấp địa chỉ IP động),
người quản trị sẽ phải tự cấu hình địa chỉ IP cho mỗi máy tính. Không có dịch vụ DNS
(Domain Name System: dịch vụ phân giải tên miền), người quản trị sẽ phải tự cấu hình
và bảo trì các tập tin Host và Lmhost. Không có khả năng tự động hóa của các dịch vụ,
những công việc tưởng chừng như đơn giản ở trên đây rất khó và thậm chí là không thể
thực hiện được trong bối cảnh các doanh nghiệp lớn và rất lớn.
Do các dịch vụ đóng một vai trò quan trọng trong cơ sở hạ tầng tính toán của
một tổ chức, nên việc quản lý dịch vụ là một phần quyết định trong bất cứ công việc
quản trị hệ thống nào. Chúng ta không thể để cho một dịch vụ ngừng hoạt động bởi vì
nếu như vậy không những nó sẽ ảnh hưởng đến máy tính mà nó đang chạy trên đó mà
nó còn ảnh hưởng đến các máy tính, các người dùng khác trong môi trường mạng nếu
máy đang chạy dịch vụ là máy chủ. Nếu dịch vụ DHCP ngưng hoạt động, các máy tính
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 3: Tìm hiểu ứng dụng dạng dịch vụ.
10
không được cấp địa chỉ IP, người dùng sẽ không vào mạng được. Nếu dịch vụ DNS bị
lỗi, dịch vụ Active Directory không dùng được, người dùng sẽ không xác định được
các tài nguyên mạng.
Việc quản lý dịch vụ giúp đảm bảo rằng:
● Các máy tính có thể hoàn thành vai trò của chúng, ví dụ như các máy trạm
(workstation), các domain controller, các máy chủ mail và các máy chủ cơ sở dữ
liệu,…
● Người dùng có thể truy xuất các tài nguyên kể cả trên máy cục bộ lẫn trên
mạng.
● Khi có vấn đề xảy ra, bạn có thể được báo động ngay trong thời gian rất ngắn.
Chẳng hạn, nếu dịch vụ DHCP dừng, sự thất bại của dịch vụ đó có thể được phát hiện
ngay lập tức và dịch vụ DHCP sẽ khởi động lại, thậm chí trước cả khi người dùng cảm
thấy có vấn đề.
3.2. Cơ chế hoạt động của các ứng dụng dạng dịch vụ
Cũng như các ứng dụng khác, dịch vụ được chạy từ các tập tin thực thi. Ví dụ,
dịch vụ DNS được chạy từ tập tin systemroot\ system32\dns.exe. Nhưng dịch vụ là một
dạng đặc biệt của ứng dụng. Không giống như các tập tin thực thi của hầu hết các ứng
dụng, tập tin thực thi của dịch vụ gồm các đoạn mã để chúng thực hiện những chức
năng đặc biệt của một dịch vụ và để giao tiếp với trình quản lý điều khiển dịch vụ
(SCM).
Để chạy một ứng dụng như một dịch vụ, phải có các thành phần sau:
● Trình quản lý điều khiển dịch vụ (Service Control manager_SCM). SCM
giao tiếp với dịch vụ bằng các lệnh chuyển tiếp yêu cầu dịch vụ khởi động, dừng, tạm
dừng, hoặc tiếp tục. SCM cũng giám sát trạng thái của mỗi dịch vụ được cài đặt và
thực hiện các hành động cụ thể nếu dịch vụ bị hỏng (dịch vụ kết thúc mà không gửi mã
kết thúc thích hợp cho SCM).
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 3: Tìm hiểu ứng dụng dạng dịch vụ.
11
● Tập tin thực thi của mỗi dịch vụ. Bao gồm đoạn mã cho phép dịch vụ hồi
đáp lại những lệnh từ SCM và thông báo trạng thái của nó với SCM. Yêu cầu này tạo
ra sự khác biệt giữa dịch vụ và các ứng dụng thông thường. Ví dụ, Notepad không thể
chạy như một dịch vụ vì những người phát triển ứng dụng này không đưa vào đoạn mã
cho phép Notepad giao tiếp với SCM.
● Chương trình điều khiển dịch vụ (Service Control Program_SCP). Cho
phép người dùng giao tiếp với SCM. Ví dụ, để chỉnh sửa dịch vụ, bạn sử dụng một
chương trình điều khiển dịch vụ để gửi các lệnh sửa đổi đến cho SCM. SCM sẽ gửi các
lệnh này đến cho dịch vụ cần thay đổi, và các sửa đổi này sẽ có hiệu lực.
* Khi một máy tính trên nền Win2K hay WS2K3 bắt đầu hoạt động, tập tin thực
thi của SCM (services.exe) bắt đầu chạy trước cả khi hộp thoại đăng nhập xuất hiện.
Điều này cho phép các dịch vụ tự khởi động trước cả khi bất kì người dùng nào đăng
nhập.
Sau khi services.exe khởi động, SCM sẽ quét nội dung trong
KEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services. Ứng với mỗi dịch
vụ liệt kê bên trong registry, SCM sẽ tạo ra một chỉ mục tương ứng với những chương
trình điều khiển dịch vụ và sau đó khởi động các dịch vụ được đặt thuộc tính là tự khởi
động.
Khi một dịch vụ khởi động, nó phát sinh tối thiểu hai luồng. Một luồng được sử
dụng để giao tiếp với SCM, luồng kia được sử dụng để trả lời các yêu cầu từ các ứng
dụng khách. Một ứng dụng mà khởi tạo duy nhất một luồng thì không thể chạy như
một dịch vụ.
3.3. Tài khoản dịch vụ và mật mã tài khoản dịch vụ
Các dịch vụ phải chạy dưới một tài khoản người dùng (user account). Khi SCM
khởi động dịch vụ, nó sẽ đăng nhập tới tài khoản đó. Nếu đăng nhập thành công, tiến
trình của dịch vụ sẽ được cấp một thẻ truy cập (access token). Từ đó về sau, trong bất
kì sự tương tác nào với những đối tượng có khả năng bảo mật (các đối tượng có các mô
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 3: Tìm hiểu ứng dụng dạng dịch vụ.
12
tả bảo mật gắn với chúng), thẻ này sẽ được sử dụng để xác nhận dịch vụ. Ví dụ, nếu
dịch vụ thử truy cập đến một máy tính ở xa, thẻ này sẽ được sử dụng cho việc chứng
thực. Nếu việc chứng thực thất bại, dịch vụ sẽ bị từ chối truy cập đến các tài nguyên.
Trong Win2K, WS2K3, hầu hết các dịch vụ hệ điều hành chạy dưới tài khoản
LocalSystem, một tài khoản đặc biệt có tất cả các đặc quyền có thể trên máy cục bộ.
LocalSystem thường được sử dụng như một tài khoản dịch vụ vì nó có tất cả các đặc
quyền và không yêu cầu thêm bất kì đặc quyền riêng nào để dịch vụ có thể chạy được.
3.4. Cách tạo một ứng dụng dịch vụ trong .NET Framework
3.4.1. Các lớp chính trong việc tạo dịch vụ
Trong .NET Framework, bạn bắt đầu việc tạo một ứng dụng dạng dịch vụ
bằng cách tạo ra một lớp thừa kế từ lớp System.ServiceProcess.ServiceBase. Sau đó
bạn sẽ định nghĩa chồng các phương thức từ lớp này và định nghĩa thêm các hàm mới
để phục vụ cho mục đích cuối của dịch vụ của bạn.
Các lớp chính trong việc tạo một ứng dụng dạng dịch vụ là:
► System.ServiceProcess.ServiceBase:
Lớp dịch vụ của bạn sẽ phải kế thừa từ lớp này. Bạn sẽ định nghĩa chồng lại các
phương thức của lớp cơ sở, các phương thức này xác định hành động gì sẽ xảy ra khi
trạng thái dịch vụ của bạn được thay đổi trong SCM. Thông thường, dịch vụ của bạn
phải định nghĩa chồng ít nhất là phương thức OnStart và OnStop. Lớp ServiceBase
có các phương thức chính sau và bạn có thể định nghĩa chồng lại bất kì phương thức
nào phù hợp với ý muốn của mình:
Phương thức Dùng để
OnStart chỉ ra các hành động nào sẽ được thực hiện khi dịch vụ của
bạn bắt đầu chạy. Bạn phải viết mã trong thủ tục này để
dịch vụ của bạn thực hiện công việc một cách có hiệu quả.
OnPause chỉ ra cái gì nên xảy ra khi dịch vụ của bạn bị tạm dừng.
OnStop chỉ ra cái gì sẽ xảy ra khi dịch vụ dừng.
OnContinue chỉ ra cái gì sẽ xảy ra khi dịch vụ của bạn được tiếp tục bình
thường sau khi bị tạm dừng.
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 3: Tìm hiểu ứng dụng dạng dịch vụ.
13
OnShutDown chỉ ra cái gì nên xảy ra chỉ trước khi hệ thống của bạn shut
down, nếu dịch vụ của bạn đang chạy tại thời điểm đó.
Chú ý: một loạt các thuộc tính của ServiceBase xác định các phương thức nào
có thể được gọi trong dịch vụ của bạn. Ví dụ, khi thuộc tính CanStop được thiết lập là
true thì phương thức OnStop mới có hiệu lực. Khi thuộc tính CanPauseandContinue
được thiết lập là true thì phương thức OnPause và OnContinue có thể được gọi.
► System.ServiceProcess.ServiceProcessInstaller và
System.ServiceProcess.ServiceInstaller:
Bạn sử dụng các lớp này để cài đặt và gỡ bỏ dịch vụ của bạn, các phương thức
của các lớp này sẽ được gọi bởi tiện ích cài đặt (như InstallUtil.exe), bạn không thể gọi
được các phương thức này. Trong đó ServiceProcessInstaller được sử dụng để chỉ ra
tài khoản người dùng mà dịch vụ sẽ chạy bên dưới đó. Bạn có thể chỉ rõ một cặp tên và
mật khẩu tài khoản hay dùng một tài khoản LocalService, LocalSystem,…
Ứng với một ứng dụng dịch vụ chúng ta có một thực thể của
ServiceProcessInstaller và ứng với mỗi dịch vụ trong ứng dụng chúng ta có một thực
thể ServiceInstaller.
► Ngoài ra, một lớp có tên là ServiceController cũng có thể được sử dụng để
đại diện cho chính dịch vụ. Lớp này thì không liên quan trong việc tạo một dịch vụ,
nhưng chúng tôi cũng muốn đề cập đến nó trong phần này bởi vì nó là một lớp thật sự
có ích trong quá trình viết một ứng dụng dạng dịch vụ.
Bạn có thể sử dụng thành phần ServiceController để tương tác với các dịch vụ
trên máy cục bộ hoặc bất kì máy nào mà bạn có thể truy cập. ServiceController cho
phép bạn thực hiện các công việc quản trị trên dịch vụ như khởi động, dừng, tạm
dừng,…, dịch vụ; lấy danh sách các dịch vụ,…
Thành phần ServiceController sẽ chuyển các yêu cầu đến SCM, chứ không
phải cho bản thân dịch vụ. Sau đó SCM sẽ thực hiện các hành động được yêu cầu như
khởi động, dừng,… dịch vụ. Sau khi ServiceController đã chuyển các yêu cầu đến
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 3: Tìm hiểu ứng dụng dạng dịch vụ.
14
SCM, nó trở về, không đợi SCM chuyển yêu cầu đến dịch vụ. Do đó, khi xử lý các
ngoại lệ bạn nên xử lý ngay trong bản thân dịch vụ hơn là trong lớp
ServiceController.
Khi bạn tạo một thực thể của lớp ServiceController, bạn phải thiết lập hai
thuộc tính trên nó để chỉ ra dịch vụ tương tác với nó: tên máy mà dịch chạy trên đó và
tên của dịch vụ mà bạn muốn điều khiển. Sau đó bạn có thể sử dụng lớp này để khởi
động, dừng,.., hay nhiều thao tác khác trên dịch vụ.
3.4.2. Tạo một ứng dụng dịch vụ đơn giản
Trong phần này chúng ta sẽ xem một ví dụ đơn giản để phần nào hình dung
được các bước căn bản cần thiết để tạo một ứng dụng dịch vụ. Dịch vụ này chỉ đơn
giản là ghi một lời nhắn vào even log mỗi lần dịch vụ khởi động hay dừng. Một số
bước chính mà bạn cần thực hiện để tạo và sử dụng dịch vụ của bạn là:
● Tạo một project, dùng mẫu ứng dụng Windows Service. Mẫu ứng dụng này sẽ
tạo ra một lớp kế thừa từ ServiceBase cho bạn.
● Viết mã cho thủ tục OnStart và OnStop, bạn cũng có thể định nghĩa chồng
thêm bất cứ phương thức nào mà bạn muốn.
● Đưa các lớp installer cần thiết vào ứng dụng dịch vụ của bạn.
● Biên dịch project của bạn.
● Tạo một setup project để cài đặt dịch vụ của bạn.
● Thực hiện cài đặt dịch vụ.
● Vào SCM để khởi động dịch vụ của bạn.
■ Tạo dịch vụ.
1. Vào menu File, trỏ đến New, chọn Project. (Ctrl+Shift+N)
Hộp thoại New Project xuất hiện.
2. Chọn Windows Service project từ danh sách các mẫu project của Visual
Basic (bạn có thể chọn ngôn ngữ nếu muốn, ở đây chúng tôi sử dụng ngôn ngữ Visual
Basic.Net). Đặt tên cho project là MyNewService.
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 3: Tìm hiểu ứng dụng dạng dịch vụ.
15
3. Phải chuột trong phần designer của Service1. Chọn Properties.
Trong cửa sổ Properties, đặt thuộc tính ServiceName và Name của Service1 là
MyNewService.
4. Đặt thuộc tính AutoLog là true để cho phép dịch vụ ghi vào event log các sự
kiện xảy ra.
5. Trên memu View, chọn Code (F7) để mở phần soạn mã. Mở rộng phần
Component Designer generated code để đến phương thức Main.
Khi bạn đặt lại tên cho dịch vụ trong bước 3, tên lớp không được chỉnh sửa lại
trong phương thức Main, bạn phải sửa lại. Sau khi sửa đổi phương thức Main của bạn
sẽ như sau:
Shared Sub Main()
Dim ServicesToRun() As System.ServiceProcess.ServiceBase
ServicesToRun = New System.ServiceProcess.ServiceBase() _
{New MyNewService()}
System.ServiceProcess.ServiceBase.Run(ServicesToRun)
End Sub
Trong bước kế tiếp, ta sẽ sử dụng thành phần EventLog (một trong các thành
phần mà ta có thể đưa vào dịch vụ) để ghi các sự kiện phát sinh trong dịch vụ. Sử dụng
thành phần EventLog, bạn có thể dễ dàng kết nối đến các event log kể cả trên máy cục
bộ hay ở xa và viết các thông tin vào đó.
■ Đưa eventlog vào dịch vụ của bạn.
1. Trong Solution Explorer (View à Solution Explorer (Ctrl+Alt+L)), phải
chuột vào Service1.vb và chọn View Designer.
2. Trong Components tab của Toolbox, kéo thành phần EventLog vào phần
designer.
3. Trong Solution Explorer, phải chuột vào Service1.vb,chọn View Code.
4. Định nghĩa event log trong hàm khởi tạo. Mở rộng phần Component
Designer generated code để thấy hàm khởi tạo của dịch vụ.
Public Sub New()
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 3: Tìm hiểu ứng dụng dạng dịch vụ.
16
MyBase.New
InitializeComponent()
If Not EventLog.SourceExists("MySource") Then
EventLog.CreateEventSource("MySource", "MyNewLog")
End If
EventLog1.Source = "MySource"
EventLog1.Log = "MyNewLog"
End Sub
■ Xác định hành động gì sẽ xảy ra khi dịch vụ được khởi động
Khi bạn tạo ứng dụng dịch vụ, phương thức OnStart đã tự động được định
nghĩa chồng, do đó bạn chỉ cần thêm vào đoạn mã để xác định hành động gì sẽ xảy ra
khi dịch vụ bắt đầu chạy. Trong trường hợp này, khi dịch vụ được khởi động, chương
trình sẽ ghi một thông tin vào event log.
Protected Overrides Sub OnStart(ByVal args() As String)
EventLog1.WriteEntry("Start_MyNewService")
End Sub
■ Xác định hành động gì sẽ xảy ra khi dịch vụ dừng
Tương tự như phương thức OnStart, phương thức OnStop cũng được tự động
định nghĩa chồng.
Protected Overrides Sub OnStop()
EventLog1.WriteEntry("Stop_MyNewService")
End Sub
* Bạn cũng có thể định nghĩa chồng lại các phương thức OnPause,
OnContinue, và OnShutdown nếu bạn có nhu cầu.
■ Tạo các installer cho dịch vụ của bạn
1. Trở lại phần designer của Service1.
2. Phải chuột, chọn Properties để hiển thị cửa sổ Properties của dịch vụ.
Kích chuột vào đường liên kết Add Installer bên dưới các thuộc tính của dịch
vụ.
Mặc định, một lớp thành phần gồm hai thành phần installer sẽ được thêm vào
trong project của bạn. Thành phần này có tên là ProjectInstaller, và các thành phần
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 3: Tìm hiểu ứng dụng dạng dịch vụ.
17
cài đặt của nó bao gồm thành phần cài đặt cho dịch vụ của bạn và thành phần cài đặt
cho các tiến trình kết hợp với dịch vụ.
3. Trong phần design của ProjectInstaller, phải chuột vào ServiceInstaller1,
chọn Properties.
4. Trong hộp thoại properties của ServiceInstaller1 bạn đặt lại thuộc tính
ServiceName là MyNewService. Có nghĩa là thành phần này sẽ đảm trách việc cài đặt
cho dịch vụ MyNewService. (thường thì điều này đã được làm một cách tự động
nhưng bạn hãy kiểm tra lại để đảm bảo tính chính xác).
5. Đặt thuộc tính StartType là Automatic. Bạn có thể chọn bất cứ dạng nào bạn
thích.
Automatic: dịch vụ sẽ được tự khởi động mỗi khi máy tính khởi động.
Manual: dịch vụ không tự khởi động. Mỗi lần muốn khởi động dịch vụ bạn phải
vào SCM để khởi động nó.
Disable: dịch vụ không hiệu lực.
6. Kích chọn ServiceProcessInstaller1. Đặt thuộc tính Account của nó là
LocalService để xác định dịch vụ sẽ chạy dưới tài khoản người dùng này.
■ Biên dịch project dịch vụ của bạn
1. Trong Solution Explorer. Phải chuột vào project và chọn Properties. Hộp
thoại Properties Pages của project xuất hiện.
2. Trong ô bên trái, chọn General tab trong thư mục Common Properties.
3. Trong danh sách Startup object, chọn MyNewService. Sau đó kích chọn nút
OK để kết thúc.
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 3: Tìm hiểu ứng dụng dạng dịch vụ.
18
Hình 3.1
4. Bấm CTRL+SHILT+B để biên dịch project.
* Đến đây thì project của bạn đã được biên dịch xong, nó có thể được triển khai.
Một setup project sẽ được sử dụng để cài đặt các tập tin đã biên dịch của
MyNewService project và chạy các cài đặt cần thiết để chạy dịch vụ. Để tạo một setup
project hoàn chỉnh, bạn phải đưa tập tin MyNewService.exe vào setup project và sau
đó đưa một hành động tùy chọn để có được bản cài đặt cho tập tin MyNewService.exe
hoàn chỉnh.
■ Để tạo một setup project cho dịch vụ của bạn
1. Trong menu File, chỉ đến Add Project, sau đó chọn New Project.
2. Trong ô Project Types, chọn thư mục Setup and Deployment Projects.
3. Trong ô Templates, chọn Setup Project. Đặt tên cho project này là
MyServiceSetup.
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 3: Tìm hiểu ứng dụng dạng dịch vụ.
19
Đến đây một setup project đã được thêm vào. Tiếp theo bạn sẽ đưa tập tin
MyNewService.exe vào setup project.
■ Đưa tập tin MyNewService.exe vào setup project
1. Trong phần Solution Explorer, phải chuột vào MyServiceSetup, trỏ đến Add,
sau đó chọn Project Output.
Hộp thoại Add Project Output Group xuất hiện.
2. MyNewService đã được chọn sẵn trong phần Project.
3. Chọn Primary Output à OK
Hình 3.2
■ Đưa một hành động tùy chọn vào setup project
1. Trong Solution Explorer, phải chuột vào MyServiceSetup, trỏ đến View, sau
đó chọn Custom Actions.
2. Trong màn hình Custom Actions, phải chuột vào nốt Custom Actions và
chọn Add Custom Action.
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 3: Tìm hiểu ứng dụng dạng dịch vụ.
20
Hộp thoại Select Item in Project xuất hiện.
3. Trong hộp danh sách, nhắp đôi chuột vào Application Folder để mở nó,
chọn Primary Output from MyNewService (Active) à OK
Hình 3.3
4. Trong Solution Explorer, phải chuột vào MyServiceSetup project, chọn
Build.
■ Cài đặt dịch vụ
● Chạy tập tin Setup.exe mà chương trình vừa biên dịch ra. Hoặc:
●Trong Solution Explorer,phải chuột vào setup project (MyServiceSetup),
chọn Install.
■ Khởi động và dừng dịch vụ của bạn
1. Mở Services Control Manager:
● Trong Windows Server 2003:
Start à All Programs à Administrator Tools à Services.
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 3: Tìm hiểu ứng dụng dạng dịch vụ.
21
Trong cửa sổ Services bạn sẽ nhìn thấy một danh sách các dịch vụ đã cài đặt
trong máy tính, kể cả dịch vụ mà chúng ta vừa tạo ra và đã cài đặt.
2. Phải chuột vào tên của dịch vụ muốn khởi động, kích Start.
3. Phải chuột vào tên dịch vụ, kích Stop khi muốn dừng dịch vụ.
■ Kiểm tra đầu ra event log của dịch vụ của bạn
1. Mở cửa sổ Component Services.
Start à All Programs à Administrator Tools à Component Services
2. Mở rộng mục Event Viewer (Local).
3. Chọn MyNewLog
Bạn sẽ thấy các tin nhắn dạng thông tin do dịch vụ của ta ghi vào như:
Start_MyNewservice hay Stop_MyNewService.
■ Gỡ bỏ dịch vụ của bạn
● Start à Control Panel à Add/Remove Programs, chọn dịch vụ muốn gỡ bỏ
và kích chọn Uninstall.
● Bạn cũng có thể gỡ bỏ dịch vụ trong môi trường lập trình của mình bằng cách:
Trong Solution Explorer, phải chuột vào setup project (MySetupProject),
chọn UnInstall.
3.5. Sự khác nhau giữa các ứng dụng dịch vụ và các ứng dụng
.NET Framework khác
Các ứng dụng dịch vụ và các ứng dụng .NET FrameWork khác nhau một vài
điểm chính như sau:
● Tập tin thực thi đã đươc biên dịch, tập tin mà một project ứng dụng dịch vụ
tạo ra phải được cài đặt trên máy trước khi project có thể hoạt động đúng nghĩa. Bạn
không thể debug hay chạy một ứng dụng dịch vụ bằng cách bấm F5 hay F11; bạn
không thể chạy dịch vụ ngay lập tức hay từng bước trong mã của nó. Thay vào đó, bạn
phải cài đặt và khởi động dịch vụ của bạn, sau đó mới gán một debugger vào quá trình
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 3: Tìm hiểu ứng dụng dạng dịch vụ.
22
xử lý của dịch vụ và bạn có thể debug ứng dụng của bạn bằng cách sử dụng tất cả các
cách debug chuẩn của Visual Studio.
● Bạn phải tạo các thành phần cài đặt cho các ứng dụng dịch vụ. Các thành phần
cài đặt sẽ thực hiện cài đặt, đăng kí dịch vụ của bạn trên máy đích và tạo một chỉ mục
cho dịch vụ của bạn với SCM của Windows.
● Trong phương thức Main, ứng dụng dịch vụ của bạn phải đưa ra lệnh Run
cho các dịch vụ mà project của bạn có. Phương thức Run này sẽ nạp các dịch vụ vào
trong SCM trên máy đích thích hợp. Ở đây các bạn nên chú ý rằng việc nạp một dịch
vụ thì không giống như việc khởi động dịch vụ.
● Các ứng dụng dịch vụ của Windows chạy trong phạm vi bảo mật của chính
chúng và được khởi động trước khi người dùng đăng nhập vào Windows trên máy mà
dịch vụ được cài đặt.
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 4: Tìm hiểu về WMI (Windows Management Instrument).
23
Chương 4: Tìm hiểu về WMI (Windows Management Instrument)
4.1. Tổng quan về WMI
4.1.1. Khái niệm script và ngôn ngữ viết script
Trước khi tìm hiểu về kỹ thuật WMI chúng ta sẽ tìm hiểu sơ lược về script
và ngôn ngữ viết script. Có thể đây là hai khái niệm hoàn toàn không liên quan đế
đề tài nhưng để hiểu một cách thấu đáo và nhanh chóng về WMI chúng ta không
thể không thông qua script.
● Script là một chương trình được viết bằng ngôn ngữ viết script (như là
JScript hoặc VBScript và các ngôn ngữ viết script thay thế như Rexx, Python, và
Perl). Khi so sánh các ngôn ngữ lập trình như C++ và Visual Basic, các ngôn ngữ
viết script thì thích hợp hơn để tạo ra các ứng dụng nhỏ.
Script thích hợp với:
+ Việc thao tác với môi trường Windows.
+ Chạy các chương trình khác.
+ Tự động hóa các thủ tục đăng nhập.
+ Gởi các khóa một cách thường xuyên đến một ứng dụng.
● Ngôn ngữ viết script là một ngôn ngữ bất kì (như Microsoft Visual Basic
Scripting Edition (VBScript) hoặc Microsoft JScript) có thể biên dịch hoặc hiểu
được các script đặc biệt. Các ngôn ngữ viết script thì thích hợp để tạo ra các ứng
dụng nhỏ có khả năng đưa ra các giải pháp nhanh chóng cho những vấn đề nhỏ.
Các script có khả năng cho phép bạn truy cập cũng như thao tác với rất
nhiều thành phần nằm sâu bên trong hệ thống, nhưng thật sự để làm được điều đó
các script phải cần đến WMI.
4.1.2. Tổng quan về WMI
Được đưa ra đầu tiên vào năm 1998 như là một thành phần bổ sung vào bản
Windows NT 4.0 Service Pack 4, WMI là một kỹ thuật cho phép quản lý các
thành phần cốt lõi bên trong hệ điều hành Windows 2000, Windows XP, và
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 4: Tìm hiểu về WMI (Windows Management Instrument).
24
Windows 2003. WMI cung cấp cho bạn một phương pháp chuẩn để tương tác với
thông tin quản lý hệ thống và các giao diện lập trình ứng dụng cơ sở.
Trước đây, và thậm chí cả ngày nay nhiều người vẫn sử dụng các công cụ
quản trị đồ họa để quản lý và giám sát các máy trạm và máy chủ. Hầu như chắc
chắn bạn đã dùng hoặc đang dùng các công cụ quản trị đồ họa để quản lý các tài
nguyên của Windows như các ổ đĩa, các tập tin, thư mục, các thành phần mạng,
các cấu hình hệ điều hành, máy in, ..v..v.
Mặc dù các công cụ đồ họa đã cung cấp hầu hết các giải pháp ứng với các
chức năng .Nhưng trước WMI, tất cả các công cụ quản trị đồ họa Windows đều
dựa vào giao diện lập trình ứng dụng Win32 (Win32 APIs) để truy cập và quản lý
các tài nguyên Windows. Tình hình này đã làm cho các nhà quản trị hệ thống
không dễ dàng gì khi muốn sử dụng các ngôn ngữ viết script thông thường để tự
động hóa các công việc quản trị thông thường, bởi vì hầu hết các ngôn ngữ viết
script không thể gọi Win32 APIs một cách trực tiếp.
WMI đã thay đổi điều đó bằng cách cung cấp một cơ cấu và mô hình thích
hợp để tất cả các tài nguyên Windows đều được mô tả và bày ra thế giới bên
ngoài. Và trên tất cả là người quản trị hệ thống có thể sử dụng thư viện viết script
WMI để tạo ra các script quản trị hệ thống để quản lý bất cứ tài nguyên Windows
nào được bày ra thông qua WMI.
Với WMI bạn có thể sử dụng VBScript, Jscript hay bất kì ngôn ngữ viết
script nào để viết các script dùng để quản lý và tự động hóa các mặt sau trong các
hệ thống xí nghiệp, các hệ thống mạng và các ứng dụng của bạn:
● Quản lý hệ thống Windows Server 2003, Windows XP Professional, và
Windows 2000: Bạn có thể viết các script để truy lục dữ liệu thực thi, quản lý các
event log, các hệ thống tập tin, máy in, các dịch vụ, tài nguyên chia sẻ, và nhiều
thành phần cũng như các cấu hình hệ điều hành khác.
● Quản lý mạng: Bạn có thể sử dụng WMI để viết các script quản lý các
dịch vụ mạng như DNS, DHCP,…
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 4: Tìm hiểu về WMI (Windows Management Instrument).
25
● Giám sát tình trạng hệ thống: bạn có thể viết các script để giám sát và trả
lời các sửa đổi hệ thống tập tin và thanh ghi cũng như các thay đổi hệ điều hành
thời gian thực khác.
4.2. Kiến trúc WMI
Kiến trúc WMI gồm ba lớp chính:
● Phần tiêu thụ (Consumers).
● Cơ sở hạ tầng WMI (WMI infrastructure).
● Các tài nguyên được quản lý (Managed resources).
Hình 4.1
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 4: Tìm hiểu về WMI (Windows Management Instrument).
26
4.2.1. Các tài nguyên được quản lý (Managed resources)
Các tài nguyên được quản lý là thành phần logic hoặc vật lý bất kì nào, các
thành phần này được bày ra và có thể được điều khiển bằng cách sử dụng WMI.
Các tài nguyên Windows có thể được quản lý bằng WMI gồm hệ thống máy tính,
các ổ đĩa, các thiết bị ngoại vi, các tập tin, thư mục, các thành phần mạng, hệ điều
hành phụ, máy in, các dịch vụ, các chia sẻ, Active Directory,…. Tài nguyên được
quản lý giao tiếp với WMI thông qua Provider.
Khi bạn bắt đầu viết chương trình tương tác với các tài nguyên được quản
lý, bạn sẽ thường nhìn thấy thuật ngữ instance (thực thể). Thuật ngữ này được sử
dụng để chỉ một đại diện ảo của tài nguyên được quản lý.
4.2.2. Cơ sở hạ tầng WMI (WMI infrastructure)
Lớp giữa trong kiến trúc WMI là cơ sở hạ tầng WMI bao gồm 3 thành
phần chính: Common Information Model Object Manager (CIMOM), kho lưu
trữ Common Information Model (CIM), và các Provider. Đồng thời, ba thành
phần WMI này cung cấp cơ sở hạ tầng thông qua dữ liệu quản lý được định nghĩa,
được bày ra, được truy cập, và được lấy về. Thành phần thứ 4 tuy nhỏ nhưng hoàn
toàn cần thiết cho việc viết script là thư viện viết script WMI.
4.2.2.1. Thư viện viết script WMI
Thư viện viết script WMI cung cấp một tập các đối tượng tự động thông
qua các ngôn ngữ viết scrip (như VBScript, JScript và ActivePerl của ActiveState)
truy cập cơ sở hạ tầng WMI. Thư viện viết script WMI được cung cấp trong một
thư viện liên kết động đơn lẻ là wbemdisp.dll, trong thư mục
%SystemRoot%\system32\wbem.
Các đối tượng tự động trong thư viện viết script WMI cung cấp một mô
hình viết script thích hợp và đồng bộ cho cơ sở hạ tầng WMI. Một khi bạn hiểu
được làm thế nào để lấy ra kiểu tài nguyên được quản lý bằng cách sử dụng thư
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 4: Tìm hiểu về WMI (Windows Management Instrument).
27
viện viết script WMI, bạn có thể dễ dàng sử dụng các bước tương tự để lấy ra các
tài nguyên quản lý WMI khác.
4.2.2.2. Kho lưu trữ CIM
Kho lưu trữ CIM là một cơ sở dữ liệu đối tượng, nó lưu trữ các đối tượng
hay các lớp. Kho lưu trữ CIM được quản lý bởi CIMOM.
CIM gồm có các lớp, một lớp đại diện cho một tài nguyên có thể được
quản lý. Tuy nhiên, các lớp này khác hơn các lớp thông thường một chút, các lớp
này đại diện cho các tài nguyên động. Có nghĩa là, các thực thể của các tài nguyên
này không được lưu trữ trong CIM mà nó được lấy về bởi Provider mỗi khi có
yêu cầu từ phần tiêu thụ. Sở dĩ có điều này là vì trạng thái hoạt động của hầu hết
các tài nguyên được quản lý thay đổi một cách thường xuyên nên phải được đọc
theo yêu cầu để đảm bảo thông tin lấy về là chính xác nhất.
Chú ý: Thuật ngữ kho là một điều gây nhầm lẫn trong phạm vi của CIM.
Mặc dù CIM là một kho và có khả năng lưu trữ dữ liệu tĩnh nhưng vai trò chính
của nó là lưu trữ các bản thiết kế cho các tài nguyên được điều khiển.
Các lớp trong CIM được tổ chức có cấp bậc, các lớp con thừa kế từ các lớp
cha. Và các lớp cơ sở, cốt lõi nhất được bảo vệ chặt chẽ khỏi hệ thống và những
người phát triển phần mềm.
Các lớp trong CIM gồm các thuộc tính mô tả cho cấu hình, trạng thái của
các tài nguyên được quản lý và các phương thức là các hàm xử lý thực hiện các
hành trên tài nguyên được quản lý.
Thực tế, CIM được lưu trữ tại thư mục %SystemRoot%\system32\wbem\
Repository\FS\ và bao gồm bốn tập tin: index.btr, index.map, objects.data,
objects.map. Trong Microsoft Windows 2000 và Windows NT4.0 Service Pack 4,
CIM được chứa trong %SystemRoot%\system32\wbem\Respository\CIM.rep.
Trong Windows Millennium Edition (Me), Windows 98, và Windows 95 OSR
2.5, CIM được chứa trong %windir%\system\wbem\Respository\CIM.rep.
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 4: Tìm hiểu về WMI (Windows Management Instrument).
28
4.2.2.3. CIMOM
CIMOM (Common information Model Object Manager) điều khiển sự
tương tác giữa các phần tiêu thụ và các Provider.
Bạn có thể xem CIMOM như một người môi giới thông tin, tất cả các yêu
cầu và luồng dữ liệu đều phải thông qua CIMOM. Khi một yêu cầu từ phần tiêu
thụ đến CIMOM, CIMOM sẽ xem xét các yêu cầu và xác định xem Provider
nào có thông tin mà phần tiêu thụ này mong muốn. Do đó phần tiêu thụ chỉ cần
biết thông tin mà mình mong muốn là gì chứ không cần phải quan tâm đến nguồn
gốc hay bất kì chi tiết nào về nguồn gốc của thông tin, nó cũng không cần quan
tâm đến việc các thông tin này được lấy ra như thế nào và bằng cách nào.
Để cung cấp cách thức chung cho các phần tiêu thụ truy cập WMI,
CIMOM cung cấp các dịch vụ cốt lõi sau trong cơ sở hạ tầng WMI:
● Đăng kí Provider: Các Provider sẽ đăng kí vị trí và thông tin về khả
năng của mình với CIMOM. Thông tin này được lưu trữ trong CIM.
● Định tuyến yêu cầu: CIMOM sẽ sử dụng thông tin đăng kí của Provider
để gửi các yêu cầu của phần tiêu thụ đến các Provider thích hợp.
● Truy cập từ xa: các phần tiêu thụ truy cập đến các hệ thống có hỗ trợ
WMI từ xa bằng cách kết nối đến CIMOM trên hệ thống từ xa. Một khi kết nối
được thiết lập thì các phần tiêu thụ có thể thực hiện các thao tác tương tự các thao
tác được thực hiện trên máy cục bộ.
● Bảo mật: CIMOM điều khiển việc truy cập đến các tài nguyên được điều
khiển bằng cách xác nhận tính hợp lệ cho mỗi lần truy cập trước khi người dùng
được phép kết nối đến WMI trên máy cục bộ hoặc máy ở xa. Bảo mật của WMI
thì không chồng lên hay phá vỡ các bảo mật của hệ điều hành.
● Truy vấn: cho phép phần tiêu thụ đưa ra các lời truy vấn đến bất kì tài
nguyên được điều khiển nào bằng cách sử dụng WQL (WMI Query Language:
Ngôn ngữ truy vấn WMI). CIMOM sẽ thực hiện ước lượng cho các câu truy vấn
này trong trường hợp các Provider không hỗ trợ các thao tác truy vấn tự nhiên.
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 4: Tìm hiểu về WMI (Windows Management Instrument).
29
● Sự kiện: cho phép phần tiêu thụ nắm bắt các sự kiện đại diện cho các thay
đổi của các tài nguyên được quản lý. CIMOM sẽ thăm dò tài nguyên được quản lý
tại khoảng mà bạn chỉ định, nó sẽ sinh ra một thông báo sự kiện khi điều kiện bắt
sự kiện được thỏa.
4.2.2.4. Các Provider
Các Provider hoạt động như một người trung gian giữa CIMOM và tài
nguyên được quản lý. Các Provider yêu cầu thông tin từ các tài nguyên được quản
lý và gởi các chỉ thị đến đó thay cho các phần tiêu thụ.
Các Provider giao tiếp riêng với từng tài nguyên được quản lý qua các giao
diện lập trình ứng dụng tự nhiên, do đó các chi tiết thi hành đối với từng tài
nguyên được quản lý sẽ được che dấu một cách cẩn thận. Provider giao tiếp với
CIMOM qua giao diện lập trình WMI.
Thường thì các Provider được thực hiện như các thư viện liên kết động
trong thư mục %SystemRoot%\system32\wbem, WMI bao gồm nhiều Provider
gắn vào hệ điều hành Win2K, Windows XP, và WS2K3. Các Provider tích hợp
này cũng được biết đến như các provider chuẩn. Sau đây là một vài provider
chuẩn trong Win2K, Windows XP, và WS2K3.
● Active Directory provider: ánh xạ các đối tượng Active Directory vào
WMI.
● Event Log provider: quản lý các event log của Windows. Ví dụ: đọc,
sao lưu dự phòng, xóa, sao chép, giám sát,… và thay đổi các cấu hình event log.
● Performance Counter provider: cung cấp cách truy cập đến dữ liệu
thực thi thô.
● Registry provider: đọc, viết, liệt kê, giám sát, tạo và xóa các khóa và giá
trị các thanh ghi.
● WDM provider: cung cấp cách truy cập đến các thông tin trên các trình
điều khiển thiết bị WDM.
● Win32 provider: cung cấp các thông tin về máy tính, đĩa, các thiết bị
ngoại vi, các tập tin, thư mục, thành phần mạng, máy in, bộ xử lý, dịch vụ,….
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 4: Tìm hiểu về WMI (Windows Management Instrument).
30
Trong phần 4.4 chúng ta sẽ tìm hiểu kỹ về provider này sau khi đã xem
một ví dụ về cách áp dụng WMI trong ứng dụng trong phần 4.3.
● Windows Installer provider: cung cấp cách truy cập đến các thông tin
về các phần mềm được cài đặt.
4.2.3. Phần tiêu thụ (Consumers)
Phần tiêu thụ là lớp trên cùng trong kiến trúc của WMI. Phần tiêu thụ là
một script, một ứng dụng, hoặc các công cụ quản trị khác truy cập và điều khiển
thông tin quản lý một cách hiệu quả thông qua cơ sở hạ tầng WMI.
4.3. Ví dụ ứng dụng WMI đơn giản
Trong phần này chúng ta sẽ xem một ví dụ đơn giản về việc sử dụng WMI
để lấy dung lượng bộ nhớ vật lý của máy cục bộ. Ở đây chúng tôi sẽ sử dụng ngôn
ngữ VBScript để viết một script đơn giản, bạn không cần phải quan tâm nhiều lắm
đến vấn đề ngôn ngữ mà vấn đề chính là hiểu các bước thực hiện. VBScript là một
ngôn ngữ viết script như nhiều ngôn ngữ viết script khác và nó có nhiều nét giống
với ngôn ngữ Visual Basic nên chúng tôi nghĩ cũng không có gì là quá phức tạp để
hiểu.
Có nhiều cách để viết một script, nhưng ở đây chúng tôi sẽ chỉ cho bạn một
cách đơn giản nhất để viết script này. Đầu tiên, bạn chỉ việc mở trình soạn thảo
Notepad, sao chép đoạn mã sau vào đó:
strComputer = "."
Set wbemServices = GetObject("winmgmts:\\" & strComputer)
Set wbemObjectSet =
wbemServices.InstancesOf("Win32_LogicalMemoryConfiguratio
n")
For Each wbemObject In wbemObjectSet
WScript.Echo "Total Physical Memory (kb): " &
wbemObject.TotalPhysicalMemory
Next
Bạn sẽ lưu tập tin này lại với tên “vidu.vbs”, sau đó kích đôi chuột vào tên
tập tin trong thư mục mà bạn đã lưu nó vào để chạy nó. Lúc này bạn sẽ thấy một
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 4: Tìm hiểu về WMI (Windows Management Instrument).
31
hộp thoại tương tự như hình bên dưới xuất hiện mang theo thông tin về dung
lượng của bộ nhớ vật lý của bạn.
Hình 4.2
Tiếp theo chúng ta sẽ xem lại ba bước chính mà đoạn mã trên đã thực hiện:
■ Bước 1: kết nối đến dịch vụ WMI.
Bước đầu tiên trong bất kì script nào là thiết lập một kết nối đến WMI.
Việc kết nối đến WMI trên máy tính đích cũng giống như các máy tính ở xa, bạn
chỉ cần gọi hàm GetObject và đưa vào đó tên thư viện viết script là “winmgmts:”
và tên của máy tính đích.
strComputer = "."
Set wbemServices = GetObject("winmgmts:\\" & strComputer)
Nếu bạn không nhớ chính xác tên máy cục bộ của mình, bạn có thể đưa vào
kí hiệu “.”, WMI sẽ hiểu đó chính là máy cục bộ.
Hàm GetObject sẽ trả về một đối tượng SwbemServices, đối tượng này
cũng được định nghĩa trong thư viện viết script WMI và bạn có thể sử dụng bất kì
phương thức nào của đối tượng này, phương thức InstancesOf bên dưới là một ví
dụ.
■ Bước 2: lấy về các thực thể của các đối tượng được quản lý.
Set wbemObjectSet =
wbemServices.InstancesOf("Win32_LogicalMemoryConfiguratio
n")
Ở đây, tùy vào mong muốn mà bạn sẽ sử dụng phương thức InstancesOf
của để lấy tất cả các thực thể của tài nguyên được quản lý được xác định bởi tên
lớp của tài nguyên (trong trường hợp này là:
Win32_LogicalMemoryConfiguration).
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 4: Tìm hiểu về WMI (Windows Management Instrument).
32
Phương thức InstancesOf trả về một tập SwbemObjectSet cũng là một đối
tượng được định nghĩa trong thư viện viết script WMI.
■ Bước 3: Hiển thị các thuộc tính của các tài nguyên được quản lý.
Mỗi phần tử của SWbemObjectSet là một đối tượng SWbemObject đại
diện cho một thực thể của tài nguyên được yêu cầu bởi vì một tài nguyên thường
có nhiều thực thể. Trong ví dụ này, chúng ta sử dụng thuộc tính
TotalPhysicalMemory để xem dung lượng của bộ nhớ vật lý. Nhưng bạn có thể
gọi bất kì thuộc tính nào của đối tượng SWbemObject để kiểm tra.
For Each wbemObject In wbemObjectSet
WScript.Echo "Total Physical Memory (kb): " &
wbemObject.TotalPhysicalMemory
Next
4.4. Tìm hiểu Win32 provider
Win32 provider định nghĩa các lớp dùng để đại diện cho phần cứng
cũng như phần mềm một cách hiệu quả trên các hệ thống Windows và các mối
quan hệ giữa chúng.
4.4.1. Các lớp mà Win32 provider hỗ trợ
Các lớp mà Win32 provider hỗ trợ được chia ra thành các phần chính như
sau. Chúng tôi sẽ liệt kê khá chi tiết trong phần này bởi vì thật sự trong quá trình
làm đề tài chúng tôi dùng khá nhiều lớp do Win32 provider cung cấp kể cả cho
các vấn đề chính lẫn vấn đề phụ. Do đó chúng tôi hy vọng là qua phần liệt kê này
sẽ làm cho các bạn thấy được phần nào sức mạnh của WMI và sau đó nếu muốn
bạn cũng có thể vận dụng nó một cách dễ dàng.
● Phần cứng hệ thống máy tính: Các lớp này đại diện cho các đối tượng
liên quan đến phần cứng.
+ Các lớp đại diện cho các thiết bị làm mát như quạt, cảm biến nhiệt,
các thiết bị làm lạnh,…
+ Các lớp đại diện cho các thiết bị đầu vào.
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 4: Tìm hiểu về WMI (Windows Management Instrument).
33
+ Các lớp đại diện cho các thiết bị lưu trữ như ổ đĩa cứng, ổ đĩa CD-
ROM.
+ Các lớp đại diện cho các thiết bị hệ thống như bộ nhớ hệ thống, bộ
nhớ cache, bus, và các mạch điều khiển.
+ Các lớp đại diện cho các thiết bị mạng.
+ Các lớp đại diện cho các dụng cụ, sự kiện, và việc cung cấp của
nguồn điện.
+ Các lớp đại diện cho máy in.
+ Các lớp đại diện cho hệ thống điện thoại.
+ Các lớp đại diện cho màn hình, card màn hình và các thiết lập kết
hợp với chúng.
● Hệ điều hành: các lớp đại diện cho các đối tượng liên quan đến hệ điều
hành.
+ Các lớp đại diện cho màn hình nền.
+ Các lớp đại diện cho các driver của các thiết bị ảo và các driver hệ
thống.
+ Các lớp đại diện cho cách thức sắp xếp logic của một đĩa cứng,
cấu trúc thư mục, các ổ đĩa,…
+ Các lớp đại diện cho các kết nối mạng, các cấu hình kết nối
mạng,…
+ Các lớp đại diện cho các sự kiện của hệ điều hành.
+ Các lớp đại diện cho hệ điều hành và các cấu hình của nó.
+ Các lớp đại diện cho bộ xử lý hệ thống.
+ Các lớp đại diện cho các thanh ghi của Windows.
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 4: Tìm hiểu về WMI (Windows Management Instrument).
34
+ Các lớp đại diện cho các cấu hình cho các công việc được lập lịch.
+ Các lớp đại diện cho các thiết lập bảo mật hệ thống.
+ Các lớp đại diện cho các dịch vụ và các dịch vụ cơ sở.
+ Các lớp đại diện cho các tài nguyên chia sẻ.
+ Các lớp đại diện cho các nhóm chưong trình.
+ Các lớp đại diện cho các thông tin tài khoản người dùng.
● Các ứng dụng được cài đặt: các lớp đại diện cho các đối tượng liên quan
đến các phần mềm được cài đặt.
● Quản lý dịch vụ WMI: các lớp dùng để quản lý WMI.
● Và cuối cùng là các lớp đại diện cho các dữ liệu thực thi thô và các dữ
liệu đã được định dạng.
Có lẽ, qua phần liệt kê một cách tương đối đầy đủ như ở trên các bạn cũng
phần nào thấy được sự nổi bật của nhóm hệ điều hành, các lớp đại diện cho hệ
điều hành và các đối tượng liên quan đến hệ điều hành. Và trong phần tiếp theo
chúng ta sẽ xem xét kỹ hơn về lớp Win32_OperatingSystem.
4.4.2. Lớp Win32_OperatingSystem
Lớp Win32_OperatingSystem đại diện cho một hệ điều hành được cài đặt
trên hệ thống máy Win32. Bất kì hệ điều hành nào có thể được cài đặt trên hệ
thống Win32 đều có nguồn gốc hoặc là thành viên của lớp này. Nếu một máy có
nhiều hệ điều hành được cài đặt, lớp này sẽ chỉ trả về một thực thể của hệ điều
hành đang hoạt động hiện thời.
Win32_OperatingSystem định nghĩa các phương thức sau:
_ Reboot.
_ SetDateTime
_ Shutdown.
_ Win32Shutdown
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 4: Tìm hiểu về WMI (Windows Management Instrument).
35
Chúng ta sẽ sử dụng phương thức Win32Shutdown của lớp
Win32_OperatingSystem để thực hiện lệnh shutdown cho máy cục bộ cũng như
các máy ở xa.
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 5: Tìm hiểu System.DirectoryServices.
36
Chương 5: Tìm hiểu System.DirectoryServices
5.1. Tổng quan về System.DirectoryServices
System.DirectoryServices là một namespace trong .Net Framework, nó cho
phép truy cập đến Active Directory thông qua kỹ thuật .NET. Với
System.DirectoryServices bạn có thể sử dụng các ngôn ngữ lập trình C#.NET và
Visual Basic.NET để phát triển các ứng dụng có nhu cầu truy cập các thông tin trong
Active Directory như các người sử dụng, các máy tính, các tài nguyên chia sẻ trong
một domain.
Sơ đồ sau cho thấy cách sắp xếp của các API danh bạ, bao gồm cả lớp mã quản
lý:
Hình 5.1
Ở đây, trong phạm vi đề tài này chúng ta sẽ sử dụng System.DirectoryServices
namespace để lấy về tên của các máy tính thuộc domain từ Active Directory trên máy
domain controller. Và có lẽ không cần phải nói nhiều hơn nữa, chúng ta sẽ xem cách sử
dụng System.DirectoryServices namespace cụ thể ở phần tiếp theo.
5.2. Cách sử dụng System.DirectoryServices
5.2.1. Đưa System.DirectoryServices vào ứng dụng
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 5: Tìm hiểu System.DirectoryServices.
37
Để sử dụng System.DirectoryServices, dĩ nhiên điều đầu tiên là chúng ta phải
đưa System.DirectoryServices vào ứng dụng. Trong môi trường lập trình, tại project
mà bạn muốn sử dụng System.DirectoryServices:
1. Chọn Project à Add Reference …
2. Chọn thư viện System.DirectoryServices.dll trong danh sách.
Hình 5.2
3. đưa dòng sau vào mã:
Imports System.DirectoryServices
5.2.2. Liên kết và sử dụng các đối tượng danh bạ
5.2.2.1. Đối tượng danh bạ
Mỗi tài nguyên mạng được đại diện bằng một đối tượng trong danh bạ. Các đối
tượng danh bạ có các đặc điểm sau:
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 5: Tìm hiểu System.DirectoryServices.
38
● Tên. Ví dụ, trong sơ đồ bên dưới tên của một đối tượng người dùng là CN =
Jeff Smith.
● Cha. Các đối tượng mạng đều kế thừa và có một đối tượng cha cho đến khi
bạn dò đến đối tượng gốc ở trên đỉnh của cây kế thừa.
● Đường dẫn. Đường dẫn của đối tượng danh bạ được xây dựng với tên của đối
tượng cha đặt trước tên đối tượng cho đến đối tượng gốc. Ví dụ, đường dẫn của đối
tượng người dùng CN=Jeff Smith là: DC=Fabrikam, DC=COM, OU=Sales, CN=Jeff
Smith. Các đường dẫn sử dụng một cú pháp được định bởi đặc tả LDAP.
Hình 5.3
5.2.2.2. Liên kết đến các đối tượng danh bạ
Ở đây, trong phần này chúng tôi không muốn các bạn bối rối hơn nữa vì một
loạt các khái niệm, định nghĩa, giới thiệu,…Do đó chúng tôi sẽ đưa ra các ví dụ cụ thể
mà chúng tôi tin chắc là hoàn toàn dễ hiểu đối với tất cả mọi người. Và từ các ví dụ này
các bạn có thể dễ dàng áp dụng lại cho các mục đích của mình.
● Liên kết đến domain hiện hành: trong ngôn ngữ VisualBasic.NET bạn chỉ cần
khai báo:
Dim ent As New DirectoryEntry()
● Liên kết đến một máy chủ cụ thể: bạn chỉ cần đưa tên máy chủ mà bạn muốn
kết nối đến. Ví dụ như bạn muốn liên kết đến máy chủ tên là server1 thì bạn sẽ khai
báo như sau:
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 5: Tìm hiểu System.DirectoryServices.
39
Dim ent As New DirectoryEntry("LDAP://server01")
● Liên kết đến một domain cụ thể: tương tự để liên kết đến một domain cụ thể
bạn sẽ phải đưa vào tên của domain ấy.
Dim ent As New DirectoryEntry("LDAP://platform.fabrikam.com")
● Liên kết đến một đối tượng cụ thể:
Khi bạn cần chỉnh sửa hay đọc thông tin từ một đối tượng cụ thể, bạn sẽ đưa tên
của đối tượng đó vào. Giả sử như ví dụ trong phần 5.2.2.1, nếu bạn muốn liên kết đến
đối tượng Jeff Smith, bạn sẽ đưa vào tên đầy đủ của đối tượng đó:
+ Nếu bạn biết chắc chắn đối tượng mà mình muốn liên kết đến thuộc domain
của mình thì bạn chỉ cần khai báo:
Dim ent As New DirectoryEntry("LDAP://
CN=Jeff
Smith,OU=Marketing,DC=fabrikam,DC=Com")
+ Nếu bạn biết đối tượng đó thuộc về máy chủ nào:
Dim ent As New DirectoryEntry("LDAP://
server01/CN=Jeff
Smith,OU=Marketing,DC=fabrikam,DC=Com")
+ Nếu bạn biết đối tượng đó thuộc về domain nào:
Dim ent As New DirectoryEntry("LDAP://
fabrikam.com/CN=Jeff Smith,OU=Marketing,DC=fabrikam,DC=Com")
Sau khi đã liên kết đến một đối tượng mong muốn, bạn có thể sử dụng các thông
tin của chúng một cách tùy thích. Như với đối tượng người dùng là Jeff Smith, bạn có
thể lấy số nhà, số điện thoại, nhóm làm việc,…của đối tượng này.
Và để kết lại phần này chúng tôi muốn các bạn xem một ví dụ nữa, một ví dụ
mà chúng tôi đã sử dụng để lấy về tên của các máy tính thuộc domain của mình:
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 5: Tìm hiểu System.DirectoryServices.
40
Dim ent As New DirectoryEntry(“LDAP:
//khtn.com/CN=Computers,DC=khtn,DC=com”)
Dim child As DirectoryEntry
Dim strName As String
For Each child In ent.Children
strName = child.Name
Next child
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 6: Ứng dụng và các chức năng của ứng dụng
41
Phần 3: Thiết kế và cài đặt ứng dụng
Chương 6: Ứng dụng và các chức năng của ứng dụng
6.1. Giới thiệu chương trình
Chương trình ShutdownTimer được xây dựng dưới dạng dịch vụ chạy trên
Windows Server 2003 domain controller để shutdown các máy trong domain theo thời
gian định trước.
Đối với máy DC: chương trình có thể chạy trên hệ điều hành Windows 2000
Server và Windows Server 2003, Windows NT Server 4.0 từ SP4 trở lên.
Đối với các máy trạm: chương trình có thể chạy trên Windows 2000
Professional , Windows XP, Windows NT WorkStation 4.0 từ SP4 trở lên.
6.2. Các lớp chính của chương trình
Chương trình gồm các lớp chính sau:
● Lớp HenGioForm:
Lớp này chứa form dùng để giao tiếp với người dùng và dịch vụ bên dưới.
Người dùng sẽ thực hiện các thao tác hẹn giờ và chọn máy shutdown trên form này.
Sau khi người dùng đã thực hiện xong các thao tác và bấm chọn nút đồng ý thì chương
trình của ta sẽ thực hiện lấy các thông tin từ form ghi vào tập tin chứa các thông tin về
thời gian và các máy shutdown.
Đồng thời trong lớp này cũng sử dụng đối tượng ServiceController để điều
khiển dịch vụ. Mỗi lần người dùng thực hiện một giờ hẹn mới, đối tượng này sẽ chịu
trách nhiệm khởi động lại dịch vụ để dịch vụ cập nhật các thông tin shutdown mới.
● Lớp Service1:
Đây là lớp chính của chương trình, được viết dưới dạng dịch vụ và kế thừa từ
lớp System.ServiceProcess.ServiceBase. Lớp này định nghĩa chồng lại hai phương
thức chính là OnStart và OnStop.
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 6: Ứng dụng và các chức năng của ứng dụng
42
_ Phương thức OnStop chỉ đơn giản là ghi vào evenlog một thông tin cho biết là
dịch vụ đã được dừng.
_ Phương thức OnStart:
+ Đọc các thông tin shutdown từ tập tin.
+ Sử dụng một đối tượng Timer để kiểm tra xem đã đến giờ hẹn hay
chưa. Nếu đến giờ đã hẹn thì gọi hàm shutdown.
● Lớp ProjectInstaller:
Được sử dụng để cài đặt và gỡ bỏ dịch vụ.
6.3. Lưu đồ hoạt động chính của ứng dụng
Sau đây là lưu đồ mô tả hoạt động chính của chương trình:
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 6: Ứng dụng và các chức năng của ứng dụng
43
Hình 6.1
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 6: Ứng dụng và các chức năng của ứng dụng
44
Ở đây, có lẽ chúng ta sẽ nói thêm cho rõ về phần kiểm tra xem đã đến giờ hẹn
chưa. Khi người dùng kết thúc việc hẹn giờ, chương trình sẽ lấy các thông tin này ghi
vào tập tin đồng thời kích hoạt dịch vụ hoạt động. Khi dịch vụ bắt đầu hoạt động nó sẽ
đọc giờ hẹn ra và kích hoạt thành phần Timer hoạt động, thành phần này sẽ chịu trách
nhiệm lấy giờ hệ thống sau mỗi phút, so sánh với giờ hẹn. Nếu đúng giờ hẹn sẽ gọi
hàm thực hiện hành động đã được người sử dụng lựa chọn như shutdown, restart,…
6.4. Cách cài đặt và sử dụng ứng dụng
1. Chạy tập tin Setup.exe để cài đặt dịch vụ.
Hình 6.2
2. Chọn thư mục để cài đặt dịch vụ.
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 6: Ứng dụng và các chức năng của ứng dụng
45
Hình 6.3
3. Trong quá trình cài đặt, bạn sẽ phải nhập tên tài khoản và mật mã của tài
khoản mà dịch vụ sẽ chạy bên dưới tài khoản đó. Bạn phải đảm bảo là tài khoản của
bạn phải thuộc nhóm quản trị. Chỉ khi nào tài khoản của bạn thuộc nhóm quản trị thì
bạn mới có quyền shutdown các máy trong domain, do đó hãy cung cấp tên tài khoản
và mật mã tài khoản một cách chính xác..
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 6: Ứng dụng và các chức năng của ứng dụng
46
Hình 6.4
4. Kích chọn Close để hoàn tất quá trình cài đặt dịch vụ.
Hình 6.5
5. Bạn có thể chạy chương trình bằng ba cách :
_ Cách 1: chạy tập tin MyFormShutdown.exe trong thư mục vừa cài đặt.
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 6: Ứng dụng và các chức năng của ứng dụng
47
_ Cách 2: nhắp đôi chuột vào shortcut của chương trình vừa được tạo ra trên
màn hình với tên mặc định là ShutdownTimer.
_ Cách 3: vào Start à Programs để kích họat chương trình.
Nếu bạn vừa cài đặt dịch vụ xong và đây là lần đầu tiên chạy ứng dụng, bạn sẽ
nhận được một thông báo yêu cầu bạn đặt mật khẩu để bảo đảm an toàn cho chương
trình của bạn.
Hình 6.6
6. Kích OK để thực hiện đặt mật khẩu cho chương trình. Màn hình đặt mật khẩu
xuất hiện.
Hình 6.7
7. Kích chọn Đồng ý để trở về màn hình đăng nhập.
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 6: Ứng dụng và các chức năng của ứng dụng
48
Hình 6.8
* Tại đây, bạn có thể thực hiện đổi mật khẩu nếu muốn. Kích chọn Đổi mật khẩu
để thực hiện đổi mật khẩu.
8. Nhập mật khẩu và kích chọn Đồng ý để vào màn hình hẹn giờ của chương
trình.
● Thực hiện hẹn giờ và chọn hành động muốn thưc hiện vào giờ hẹn trong tab
Hẹn giờ.
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 6: Ứng dụng và các chức năng của ứng dụng
49
Hình 6.9
Hẹn giờ có các tùy chọn sau:
_ Hẹn một lần: hẹn giờ shutdown máy vào một thời điểm duy nhất của
một ngày duy nhất.
_ Hẹn lặp.
+ Mỗi ngày: hẹn giờ shutdown máy vào mỗi ngày
+ Các ngày trong tuần: hẹn giờ shutdown máy vào các thứ trong
tuần.
_ Bỏ hẹn: Hủy bỏ tất cả các thời gian đã hẹn, không hẹn giờ nữa.
Chế độ shutdown có các tùy chọn sau:
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 6: Ứng dụng và các chức năng của ứng dụng
50
_ Shutdown.
_ Forced Shutdown: Shutdown máy bất kể máy đang thực hiện công việc
gì.
_ Restart: Khởi động lại máy tính.
_ Forced Restart: Khởi động lại máy tính bất kể máy đang thực hiện công
việc gì.
_ LogOff: Đăng xuất.
_ Forced LogOff: Đăng xuất bất kể máy đang thực hiện công việc gì.
● Chọn các máy áp dụng trong tab Máy shutdown.
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 6: Ứng dụng và các chức năng của ứng dụng
51
Hình 6.10
Trong phần này, ứng dụng có hai tùy chọn cho bạn lựa chọn:
_ Môi trường đơn: nếu chương trình của bạn chỉ áp dụng cho máy đơn cục bộ.
_ Môi trường mạng: Nếu máy của bạn là DC cho một domain. Nếu máy của bạn
là máy đơn, hoặc là máy mạng nhưng không phải là DC thì khi bạn chọn tùy chọn này
bạn sẽ nhận được một thông báo lỗi.
Trong môi trường mạng bạn sẽ chọn các máy để chương trình thực hiện hành
động shutdown (restart, logoff,…) khi đến giờ hẹn. Bạn có thể chọn DC, cũng có thể
chọn các máy trạm.
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 6: Ứng dụng và các chức năng của ứng dụng
52
Đối với các máy trạm, bạn có hai tùy chọn:
+ Tất cả: chương trình sẽ thực hiện shutdown tất cả các máy trạm đang
họat động vào giờ hẹn.
+ Tùy chọn: chương trình chỉ thực hiện hành động shutdown đối với các
máy trạm đã được bạn chọn vào giờ hẹn.
9. kích Đồng ý để bắt đầu hẹn giờ và kích hoạt chương trình.
* Nếu bạn muốn hẹn giờ cho nhiều nhóm máy riêng biệt thì vẫn thao tác như
với một nhóm máy ứng với mỗi nhóm
VD: bạn hẹn cho nhóm 1 thời gian hẹn là thứ 2, 4, và 6, còn các máy áp dụng là
tất cả các máy trạm. Bấm đồng ý để xác nhận.
Tiếp tục hẹn cho nhóm 2 thời gian hẹn là mỗI ngày, còn máy áp dụng là
một số máy trạm tùy chọn. Bấm đồng ý để xác nhận cho nhóm này.
Đến đây thì xem như bạn đã hòan thành việc hẹn giờ cho hai nhóm riêng
biệt.
Bạn có thể sang tab “các nhóm đã hẹn” để xem lại thời gian mà mình đã
hẹn cho các nhóm có đúng hay không.
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 6: Ứng dụng và các chức năng của ứng dụng
53
Hình 6.11
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 7: Kết luận – Đánh giá – Hướng phát triển
54
Chương 7: Kết luận - Đánh giá – Hướng phát triển
7.1. Kết luận và đánh giá
Ứng dụng đáp ứng đầy đủ các yêu cầu đặt ra cùng với các ưu và khuyết điểm tự
nhận xét như sau:
● Ưu điểm:
+ Đơn giản, dễ sử dụng, giao diện thân thiện với người dùng.
+ Chức năng hẹn giờ linh hoạt giúp người sử dụng có thể dễ dàng chọn
lựa được dạng giờ hẹn mong muốn.Cho phép hẹn giờ vào một ngày bất kì và hẹn lặp
giờ vào mỗi ngày hay các thứ trong tuần. Chức năng này thật sự thích hợp cho các tổ
chức, trung tâm có thời khóa biểu làm việc rõ ràng cụ thể.
+ Giao diện giao tiếp với người dùng hoàn toàn bằng tiếng Việt.
+ Hỗ trợ đa dạng hành động cho việc hẹn giờ. Ví dụ: Shutdown,
ForcedShutdown, Restart, ForcedRestart, LogOff, ForcedLogOff.
+ Cho phép hẹn giờ tắt máy theo từng nhóm hay từng máy.
+ Chạy tốt trên Windows server 2003 domain controller và shutdown
được một số hay tất cả các máy trên domain.
+ Để sử dụng chương trình bạn không cần phải cài đặt thêm bất cứ thứ gì
trên các máy trạm.
● Nhược điểm:
+ Giao diện chương trình không mang tính mỹ thuật cao.
+ Không hiển thị thông báo khi tắt máy.
+ Chương trình chưa thật sự quan tâm nhiều lắm đến vấn đề bảo mật cho
ứng dụng.
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 7: Kết luận – Đánh giá – Hướng phát triển
55
Ó Bảng so sánh các tính năng của chương trình với một số chưong trình đã có:
Chức năng ShutdownTimer
Shutdown
Alarm
Shutdown
Or Restart
now
Shutdown
Plus
Remote
Tiện ích
shutdown
của
Windows
Giao diện tiếng Việt x x - - -
Tắt máy cục bộ x x x x x
Tắt máy từ xa x - x x x
Hẹn giờ tắt máy vào
ngày, giờ cố định
x x x x -
Hẹn giờ tắt máy lặp
lại vào mỗi ngày,
mỗi thứ trong tuần
x - x x -
Không cần cài đặt
chương trình trên
các máy trạm
x - x - x
Hiển thị thông báo
trước khi tắt.
- x x x x
Hẹn giờ tắt theo
từng nhóm hoặc
từng máy.
x - - x -
Có mật khẩu để bảo
vệ chương trình
x x - - -
KH
OA
C
NT
T –
Đ
H
KH
TN
Chương 7: Kết luận – Đánh giá – Hướng phát triển
56
7.2. Hướng phát triển
+ Thiết kế lại giao diện để giao diện có tính mỹ thuật và bắt mắt người sử
dụng hơn.
+ Thêm một số chức năng phụ để chương trình thêm phong phú và đáp
ứng được nhu cầu luôn luôn tăng của người sử dụng như:
· Hiển thị thông báo trước khi thực hiện hành động shutdown,
restart hay logoff.
● Đổ chuông hay phát tín hiệu khi đến giờ hẹn để báo sắp đến giờ
hẹn.
● Cho phép hẹn giờ để mở nhạc hay chạy một file nào đó.
● Đặt chế độ theo dõi CPU để có thể shutdown, restart,… máy khi
CPU rảnh rỗi trong một thời gian nào đó. ví dụ, khi CPU rảnh 99% trong 30 phút thì
thực hiện shutdown máy,…
+ Cải thiện và thật sự quan tâm đến vấn đề bảo mật của ứng dụng.
KH
OA
C
NT
T –
Đ
H
KH
TN
Tài liệu tham khảo
57
TÀI LIỆU THAM KHẢO
1. Phạm Hoàng Dũng, Làm Chủ Windows Server 2003, 1, NXB Thống Kê, Số
21 Bùi Thị Xuân Q1_TP.HCM, 2003.
2. Tài liệu tham khảo điện tử MSDN 2004.
3. Webside: www.microsoft.com.
Các file đính kèm theo tài liệu này:
- Unlock-0012043_0012657.pdf