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

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

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

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

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

Trang

Hình vẽ

Hình 6.11.................................................................................................53

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

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

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.

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.

Chương 1: Đặt vấn đề và giới thiệu đề tài

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

1

đơ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?

Chương 1: Đặt vấn đề và giới thiệu đề tài

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:

2

+ Gi ải quyết được tương đối yêu cầu đặt ra là hẹn giờ để tắt máy.

Chương 1: Đặt vấn đề và giới thiệu đề tài

+ 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

3

domain controller server) bằng phương tiện Remote Deskstop Connection.

Chương 2: Tìm hiểu một số khái niệm liên quan đến đề tài

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ọ

4

chăng?

Chương 2: Tìm hiểu một số khái niệm liên quan đến đề tài

● 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

5

domain khác của chính nó.

Chương 2: Tìm hiểu một số khái niệm liên quan đến đề tài

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

6

tượng.

Chương 2: Tìm hiểu một số khái niệm liên quan đến đề tài

● 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

7

phát triển từ Windows 2000 Advanced Server.

Chương 2: Tìm hiểu một số khái niệm liên quan đến đề tài

● 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à

8

rất lớn.

Chương 3: Tìm hiểu ứng dụng dạng dịch vụ.

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

9

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

Chương 3: Tìm hiểu ứng dụng dạng dịch vụ.

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ã

10

kết thúc thích hợp cho SCM).

Chương 3: Tìm hiểu ứng dụng dạng dịch vụ.

● 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

11

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ô

Chương 3: Tìm hiểu ứng dụng dạng dịch vụ.

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

12

OnPause OnStop OnContinue 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ả. chỉ ra cái gì nên xảy ra khi dịch vụ của bạn bị tạm dừng. chỉ ra cái gì sẽ xảy ra khi dịch vụ dừng. 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.

Chương 3: Tìm hiểu ứng dụng dạng dịch vụ.

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ư

13

khởi động, dừng,… dịch vụ. Sau khi ServiceController đã chuy ển các yêu c ầu đến

Chương 3: Tìm hiểu ứng dụng dạng dịch vụ.

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

14

Basic.Net). Đặt tên cho project là MyNewService.

Chương 3: Tìm hiểu ứng dụng dạng dịch vụ.

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 (cid:224) 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ụ.

15

Public Sub New()

Chương 3: Tìm hiểu ứng dụng dạng dịch vụ.

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

ở lại phần designer của Service1. 1. Tr

ải chuột, chọn Properties để hiển thị cửa sổ Properties của dịch vụ. 2. Ph

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

16

trong project c ủa bạn. Thành ph ần này có tên là ProjectInstaller, và các thành ph ần

Chương 3: Tìm hiểu ứng dụng dạng dịch vụ.

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

17

OK để kết thúc.

Chương 3: Tìm hiểu ứng dụng dạng dịch vụ.

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à

18

MyServiceSetup.

Chương 3: Tìm hiểu ứng dụng dạng dịch vụ.

Đế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 (cid:224) 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à

19

chọn Add Custom Action.

Chương 3: Tìm hiểu ứng dụng dạng dịch vụ.

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) (cid:224) 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:

20

Start (cid:224) All Programs (cid:224) Administrator Tools (cid:224) Services.

Chương 3: Tìm hiểu ứng dụng dạng dịch vụ.

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.

ải chuột vào tên của dịch vụ muốn khởi động, kích Start. 2. Ph

ải chuột vào tên dịch vụ, kích Stop khi muốn dừng dịch vụ. 3. Ph

■ Kiểm tra đầu ra event log của dịch vụ của bạn

ở cửa sổ Component Services. 1. M

(cid:224) All Programs (cid:224) Administrator Tools (cid:224) Component Services Start

ở rộng mục Event Viewer (Local). 2. M

ọn MyNewLog 3. Ch

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 (cid:224) Control Panel (cid:224) 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

21

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

Chương 3: Tìm hiểu ứng dụng dạng dịch vụ.

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à

22

dịch vụ được cài đặt.

Chương 4: Tìm hiểu về WMI (Windows Management Instrument).

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:

ệc thao tác với môi trường Windows. + Vi

ạy các chương trình khác. + Ch

ự động hóa các thủ tục đăng nhập. + T

+ 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

23

thành ph ần cốt lõi bên trong h ệ điều hành Windows 2000, Windows XP, và

Chương 4: Tìm hiểu về WMI (Windows Management Instrument).

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

24

dịch vụ mạng như DNS, DHCP,…

Chương 4: Tìm hiểu về WMI (Windows Management Instrument).

● 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).

25

Hình 4.1

Chương 4: Tìm hiểu về WMI (Windows Management Instrument).

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

26

đượ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ư

Chương 4: Tìm hiểu về WMI (Windows Management Instrument).

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

27

2.5, CIM được chứa trong %windir%\system\wbem\Respository\CIM.rep.

Chương 4: Tìm hiểu về WMI (Windows Management Instrument).

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

28

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.

Chương 4: Tìm hiểu về WMI (Windows Management Instrument).

● 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ị

29

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ụ,….

Chương 4: Tìm hiểu về WMI (Windows Management Instrument).

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

30

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

Chương 4: Tìm hiểu về WMI (Windows Management Instrument).

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à:

31

Win32_LogicalMemoryConfiguration).

Chương 4: Tìm hiểu về WMI (Windows Management Instrument).

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,…

32

+ Các l ớp đại diện cho các thiết bị đầu vào.

Chương 4: Tìm hiểu về WMI (Windows Management Instrument).

+ 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.

33

+ Các l ớp đại diện cho các thanh ghi của Windows.

Chương 4: Tìm hiểu về WMI (Windows Management Instrument).

+ 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.

34

_ Win32Shutdown

Chương 4: Tìm hiểu về WMI (Windows Management Instrument).

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ư

35

các máy ở xa.

Chương 5: Tìm hiểu System.DirectoryServices.

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

36

5.2.1. Đưa System.DirectoryServices vào ứng dụng

Chương 5: Tìm hiểu System.DirectoryServices.

Để 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 (cid:224) 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

37

tượng danh bạ có các đặc điểm sau:

Chương 5: Tìm hiểu System.DirectoryServices.

● 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

38

báo như sau:

Chương 5: Tìm hiểu System.DirectoryServices.

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ụ

39

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:

Chương 5: Tìm hiểu System.DirectoryServices.

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

40

Chương 6: Ứng dụng và các chức năng của ứng dụng

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

41

thức chính là OnStart và OnStop.

Chương 6: Ứng dụng và các chức năng của ứng dụng

_ 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

42

Sau đây là lưu đồ mô tả hoạt động chính của chương trình:

Chương 6: Ứng dụng và các chức năng của ứng dụng

43

Hình 6.1

Chương 6: Ứng dụng và các chức năng của ứng dụng

Ở đâ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

44

2. Ch ọn thư mục để cài đặt dịch vụ.

Chương 6: Ứng dụng và các chức năng của ứng dụng

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

45

và mật mã tài khoản một cách chính xác..

Chương 6: Ứng dụng và các chức năng của ứng dụng

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 :

46

_ Cách 1: ch ạy tập tin MyFormShutdown.exe trong thư mục vừa cài đặt.

Chương 6: Ứng dụng và các chức năng của ứng dụng

_ 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 (cid:224) 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

47

7. Kích ch ọn Đồng ý để trở về màn hình đăng nhập.

Chương 6: Ứng dụng và các chức năng của ứng dụng

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

48

Hẹn giờ.

Chương 6: Ứng dụng và các chức năng của ứng dụng

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.

49

Chế độ shutdown có các tùy chọn sau:

Chương 6: Ứng dụng và các chức năng của ứng dụng

_ 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ì.

50

● Chọn các máy áp dụng trong tab Máy shutdown.

Chương 6: Ứng dụng và các chức năng của ứng dụng

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 ể

51

chọn các máy trạm.

Chương 6: Ứng dụng và các chức năng của ứng dụng

Đố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 đã

52

hẹn cho các nhóm có đúng hay không.

Chương 6: Ứng dụng và các chức năng của ứng dụng

53

Hình 6.11

Chương 7: Kết luận – Đánh giá – Hướng phát triển

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

54

ứng dụng.

Chương 7: Kết luận – Đánh giá – Hướng phát triển

(cid:211) 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 Shutdown Alarm Shutdown Timer 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 x x x x - ngày, giờ cố định

Hẹn giờ tắt máy lặp

lại vào mỗi ngày, x - x x -

mỗi thứ trong tuần

Không cần cài đặt

chương trình trên x - x - x

các máy trạm

Hiển thị thông báo - x x x x trước khi tắt.

Hẹn giờ tắt theo

từng nhóm hoặc x - - x -

từng máy.

55

Có mật khẩu để bảo x x - - - vệ chương trình

Chương 7: Kết luận – Đánh giá – Hướng phát triển

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,…

56

+ Cải thiện và thật sự quan tâm đến vấn đề bảo mật của ứng dụng.

Tài liệu tham khảo

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.

57

3. Webside: www.microsoft.com.