MỤC LỤC
Tìm hiểu về các file.dll trong win7
(DLL - Dynamic Link Library)
Nhóm Sv Thực Hiện: LÊ THỊ KIM ANH
NGUYỄN THỊ HUẾ
NGUYỄN VĂN TÙNG
Đề tài: Tìm hiểu về các file .DLL trong win7
Nhóm 13 – TKT K56
BẢNG PHÂN CÔNG CÔNG VIỆC
Nội dung
Lê Thị Kim Anh
1.Thư viện và các
loại liên kết
2.Tìm hiểu về thư
X
viện liên kết động
3. Ưu và nhược
X
điểm của thư viện
liên kết động
4. Định nghĩa và
giải thích về một tập
tin .dll
5. DLL và cơ chế
quản lý bộ nhớ
6. Lợi thế DLL
X
7. Làm thế nào để
xác định nguồn gốc
một tập tin DLL
8. Quản lý tập tin
DLL trong window
9. Tìm hiểu về một
số file .DLL thông
X
dụng trong Win7
10. Làm thế nào để
giải quyết lỗi hoặc
hư file .DLL
11. Tổng hợp và
trình bày
GVHD: Nguyễn Thị Hữu Phương
Nguyễn Thị Huế
X
Nguyễn Văn Tùng
X
X
X
X
X
X
X
X
2
Đề tài: Tìm hiểu về các file .DLL trong win7
I.
Nhóm 13 – TKT K56
Thư viện và các loại liên kết.
Thư viện là một tập tin chứa những hàm hoặc tài nguyên khác có sẵn mà các
ứng dụng có thế lấy để sử dụng. Các tài nguyên này thường cho phép nhiều
ứng dụng cùng chia sẻ sử dụng dễ dàng một đoạn mã hoặc tài nguyên.
Liên kết là cách thức mà trình biên dịch nhúng /kết hợp các đoạn mã thực thi
của những module thư viện (Lib) vào chương trình.
Có 2 loại liên kết:
+ Liên kết tĩnh.
+ Liên kết động.
II.
Tìm hiểu về thư viện liên kết động.
Định nghĩa về thư viện liên kết động (tiếng Anh: Dynamic Link Library -
viết tắt: DLL)
là một thành phần của các phần mềm. Đặc điểm của nó là có tính
khả chuyển cao, nhờ đó mà một DLL có thể được gắn vào một hoặc
nhiều phần mềm khác nhau. DLL còn là đuôi của một tập tin chạy
trên hệ điều hành Windows (.dll).
Là thư viện chứa các hàm và dữ liệu có thể được gọi từ các module
khác (module có thể là 1 ứng dụng EXE hay là một DLL khác).
DLL được nạp vào bộ nhớ lúc run-time và được map vào vùng nhớ
của tiến trình gọi.
Một DLL là 1 module chứa các hàm, dữ liệu mà có thể được sử
dụng bởi các module khác ( app hoặc dll ).
Chức năng thư viện liên kết động: có thể hiểu một phần qua tên gọi, có tác
dụng liên kết các thành phần trong WIN. Trong quá trình chạy, WIN không thể
biểu thị hết các thành phần và nói chung là có rất nhiều các File mà chạy và
chính các file .DLL có tác dụng liên kết các file này với nhau tạo sự thống nhất
và ổn định của WIN.
Ví Dụ: Khi xây dựng một chương trình windows nhập thông tin khách hàng,
bạn cần kiểm tra email có hợp lệ hay không. khi bạn được xếp yêu cầu viết cái
form nhập thông tin khách hàng trên web, bạn lại được yêu cầu phải kiểm tra
email hợp lệ. vậy bạn sẽ làm gì? chắc chắn sẽ là copy cái hàm kiểm tra email
từ chương trình windows sang ứng dụng webform. Vậy khi bạn làm hàng
nghìn chương trình, chẳng lẽ cứ copy liên tục thế sao? DLL hay thư viện liên
kết động ra ơời để giải quyết vấn đề trên, bạn chỉ cần viết một hàm kiểm tra
GVHD: Nguyễn Thị Hữu Phương
3
Đề tài: Tìm hiểu về các file .DLL trong win7
Nhóm 13 – TKT K56
mail, đóng lại thành dll, và bạn có thể sử dụng ở bất kỳ đâu, trong ví dụ đó là
cả chương trình windows và web của bạn.
Các loại liên kết động : Liên kết động có hai dạng phụ thuộc vào cách nhúng
thông tin vào trong file thực thi. Đó là liên kết không tường minh và liên kết
tường minh (Implicit Linking và Explicit Linking).
Liên kết không tường minh (Implicit Linking)
+ Liên kết không tường minh hay liên kết ở thời điểm nạp (Loadtime dynamic Linking) diễn ra ở thời điểm biên dịch, khi ứng dụng tạo
một tham chiếu tới hàm DLL được export. Tại thời điểm mã nguồn của
lời gọi đó được biên dịch, lời gọi hàm DLL dịch thành một hàm tham
chiếu ngoài trong đối tượng mã. Để hiểu được tham chiếu ngoài này,
ứng dụng phải liên kết với thư viện import (file có phần mở rộng là
.LIB) đã được DLL tạo ra khi biên dịch.
+ Thư viện import chỉ chứa các thông tin về thành phần được export
từ DLL mà không có một dòng lệnh giúp trình biên tập (linker) xử lý
các lời gọi hàm tới DLL. Khi trình biên tập tìm thấy thông tin về hàm
export trong một file .lib, và giả sử như mã lệnh của hàm đó nằm trong
một DLL có sẵn, thì để xử lý các tham chiếu đến hàm, trình biên tập
phải nhúng thêm một số thông tin vào file thực thi cuối cùng, thành
phần được dùng bởi bộ nạp hệ thống khi mà tiến trình khởi động.
+ Khi bộ nạp (loader) chuẩn bị chạy một chương trình, trong đó có
chứa các liên kết động, thì nó sẽ sử dụng thông tin được nhúng (ở thời
điểm biên dịch, như đã nói ở trên) vào file thực thi chương trình để xác
định các thư viện yêu cầu. Nếu như nó không thể tìm được DLL, thì hệ
thống sẽ chấm dứt tiến trình và hiện ra một hộp thoại để thông báo lỗi
tương ứng. Ngược lại, hệ thống sẽ nạp DLL (nếu như trước đó nó chưa
được nạp) và ánh xạ các module DLL (hàm và lớp) vào trong không
gian địa chỉ của tiến trình. Chú ý rằng mỗi tiến trình đều có một không
gian địa chỉ riêng, do vậy nên nhiều tiến trình có thể sử dụng chung một
DLL. Khi đó địa chỉ hàm được gọi sẽ nằm trong không gian này.
+ Nếu như DLL nào đó có hàm Entry-point (như đã đề cập ở phần
trước), hệ thống sẽ gọi hàm này. Tham số fdwReason sẽ có giá trị là
GVHD: Nguyễn Thị Hữu Phương
4
Đề tài: Tìm hiểu về các file .DLL trong win7
Nhóm 13 – TKT K56
DLL_PROCESS_ATTACH, xác định rằng DLL đang được gắn vào tiến
trình. Nếu như giá trị trả về của hàm Entry-point không phải là TRUE,
hệ thống sẽ bỏ dở việc nạp tiến trình và thông báo lỗi.
+ Khi tất cả các bước trên diễn ra mà không có lỗi nào, cuối cùng thì
bộ nạp (loader) sẽ cho phép các mã thực thi của tiến trình có thể gọi
hàm DLL bất cứ khi nào tham chiếu đến nó được tạo ra. Các thành phần
của DLL sẽ được ánh xạ sang không gian địa chỉ của tiến trình khi tiến
trình bắt đầu chạy và nó chỉ được nạp vào bộ nhớ khi nào cần thiết.
Liên kết tường minh (Explicit Linking)
+ Liên kết tường minh hay còn gọi là liên kết ở thời điểm chạy (Runtime Dynamic Linking): sử dụng các con trỏ hàm ở thời điểm chạy
chương trình để trỏ tới các hàm trong DLL mà ta cần sử dụng. Modul sẽ
dùng hàm LoadLibrary hoặc hàm LoadLibraryEx để nạp DLL khi nào
nó muốn sử dụng hàm trong DLL. Sau khi DLL đã được nạp, modul sử
dụng hàm GetProcAddress để lấy về địa chỉ trỏ tới hàm xuất ra trong
DLL và đưa vào một con trỏ hàm nào đó. Các thao tác tiếp theo của
modul sẽ làm việc với con trỏ hàm này.
+ Hầu hết các ứng dụng được phát triển đều sử dụng liên kết ở thời
điểm nạp (load-time dynamic linking) bởi vì đó là cách liên kết dễ dàng
nhất. Nhưng dựa vào một số các ràng buộc, thỉnh thoảng phương pháp
trên là không cần thiết. Sau đây là một số trường hợp cụ thể nên dùng
liên kết ở thời điểm chạy thay thế:
+ Khi ứng dụng không biết tên của DLL hoặc thành phần export sẽ sử
dụng để nạp. Ví dụ như ứng dụng có thể lưu giữ tên của DLL và thành
phần export trong một file cấu hình. Sau khi chương trình đã đóng gói,
việc thay đổi DLL đơn giản chỉ là việc thay đổi file cấu hình mà không
phải biên dịch lại toàn bộ chương trình.
+ Một tiến trình sử dụng liên kết ở thời điểm nạp có thể bị chấm dứt
bởi hệ thống nếu như DLL không tìm thấy ở thời điểm bắt đầu chạy.
Tuy nhiên, nếu sử dụng liên kết động ở thời điểm chạy thì chương trình
không bị chấm dứt ngay, mà còn cho ta một số phương án để có thể
GVHD: Nguyễn Thị Hữu Phương
5
Đề tài: Tìm hiểu về các file .DLL trong win7
Nhóm 13 – TKT K56
khắc phục lỗi. Ví dụ như, khi không tìm thấy DLL, chương trình không
dừng chương trình ngay lập tức mà có thể tùy chọn cho phép người
dùng cung cấp một đường dẫn khác tới DLL.
+ Một tiến trình sử dùng liên kết ở thời điểm nạp cũng có thể bị thoát
nếu như một trong số các DLL nó liên kêt đến có hàm Entry-point trả về
giá trị không phải là TRUE. Trong khi đó tiến trình sử dụng liên kết ở
thời điểm chạy không bị kêt thúc trong trường hợp này nếu như ta có
các cách thức xử lý hợp lý.
+ Một ứng dụng mà liên kết không tường minh tới quá nhiều DLL sẽ
khởi động rất chậm bởi vị Windows nạp tất cả các DLL đó khi ứng
dụng nạp để chạy. Để tăng hiệu suất khi khởi động, ứng dụng có thể có
các liên kết không tường minh đến các DLL cần thiết được dùng ngay
khi chương trình bắt đầu, và dùng liên kết tường minh tới các DLL khác
ở thời điểm hợp lý hơn.
+ Liên kết động ở thời điểm chạy sẽ loại bỏ được việc tạo các thư
viện import. Nếu như những thay đổi trong DLL là do thứ tự export của
các hàm thay đổi, ứng dụng sử dụng liên kết ở thời điểm chạy sẽ không
phải liên kết lại (giả sử các lời gọi GetProcAddress với tham số là tên
của hàm chứ không phải là giá trị chỉ số của hàm ), còn các ứng dụng sử
dụng liên kết ở thời điểm nạp sẽ phải liên kết lại tới thư viện import
mới.
Dạng file của thư viện liên kết động: .LIB và .DLL
File .Lib:
+ Thưviện nhập (Import library).
+ Không chứa mã lệnh của các hàm.
+ Chỉ chứa các thông tin cần thiết để Hệ điều hành nạp thư viện
DLL và xác định hàm export trong DLL.
+ Sử dụng khi dùng cách thức load-time dynamic linking.
GVHD: Nguyễn Thị Hữu Phương
6
Đề tài: Tìm hiểu về các file .DLL trong win7
Nhóm 13 – TKT K56
File .DLL:
+ Chứa mã lệnh nhị phân của các hàm thư viện.
+ Được tải vào bộ nhớ khi ứng dụng gọi hàm thư viện.
+ Cần có khi thực hiện ứng dụng.
- Mã lệnh của các hàm sẽ không được nhúng vào trong file chương trình của ứng dụng
- Ứng dụng chỉ cần lưu thông tin của hàm thư viện, và khi cần, Hệ điều hành sẽ tải các
hàm thư viện vào bộ nhớ.
III.
Ưu và nhược điểm của thư viện liên kết động:
Ưu điểm:
Giảm không gian sử dụng của bộ nhớ
+ Hàm và dữ liệu trong các DLL được chia sẻ bởi các ứng dụng
dùng nó. Như trong ví dụ ở trên, các ứng dụng Winword, Microsoft
Excel, Internet Explorer sẽ dùng chung một hàm print() đã được biên
dịch thành mã máy và để trong một DLL nào đó, mà không cần phải
bao gồm toàn bộ mã nguồn của hàm. Bên cạnh đó, ta cũng có thể
giảm được dung lượng bộ nhớ của chương trình tùy vào cách dùng
các hàm DLL (Run-time hay Load-time, sẽ được trình bày sau): ứng
dụng của ta sẽ chỉ nạp các hàm này khi nào dùng đến.
+ Mã trong DLL nằm trong khu vực chỉ cho đọc (read-only) và
được nạp vào các trang nhớ đánh dấu read-only. Nó cho phép hệ
thống ánh xạ DLL vào trong không gian địa chỉ nhớ của các tiến
trình sử dụng nó. Và như vậy, DLL được nạp chỉ một lần, và nếu
một tiến trình yêu cầu sử dụng nó, hệ điều hành chỉ việc ánh xạ DLL
tới không gian địa chỉ của ứng dụng gọi DLL.
Giảm Swapping (tráo đổi)
+ Ta tưởng tượng có hai tiến trình sử dụng cùng một DLL, một tiến
trình kết thúc công việc của nó và thoát ra. Nhưng DLL sẽ không gỡ
bỏ ra khỏi bộ nhớ vì DLL quản lý thời gian tồn tại của nó bằng cách
GVHD: Nguyễn Thị Hữu Phương
7
Đề tài: Tìm hiểu về các file .DLL trong win7
Nhóm 13 – TKT K56
giữ một bộ đếm tham khảo cho các tiến trình sử dụng nó. Mỗi khi có
một tiến trình nào đó yêu cầu sử dụng DLL, bộ đếm tham khảo sẽ
tăng giá trị của nó lên 1; còn khi có một tiến trình gỡ bỏ không sử
dụng nữa thì bộ đếm lại giảm đi 1. DLL sẽ tự động xóa bỏ ra khỏi bộ
nhớ chừng nào bộ đếm tham khảo trở về 0, trạng thái cho biết không
còn có tiến trình nào sử dụng DLL nữa.
+ Bây giờ giả sử có một tiến trình bắt đầu chạy và yêu cầu hệ thống
nạp một DLL hiện đang được dùng bởi một ứng dụng đã chạy trước
đó. Chuyện gì sẽ xảy ra? Liệu hệ thống có nạp DLL một lần nữa
không? Hiển nhiên là không, vì DLL được định nghĩa ra để có thể
dùng chung giữa các ứng dụng khác nhau. Thành phần đã nạp DLL
có tất cả các hàm và dữ liệu của nó trong bộ nhớ và hệ thống sẽ chỉ
phải ánh xạ chúng tới không gian địa chỉ của tiến trình mới cho
chúng hoạt động. Nó liên quan đến việc đọc các hàm và dữ liệu DLL
từ trên đĩa.
Có thể đóng gói và đưa vào chương trình khác
+ Khi đã xây dựng được một DLL với các chức năng hợp lý, ta có
thể sử dụng nó trong bất cứ ứng dụng nào mà ta cảm thấy thích hợp.
Ví dụ trong một ứng dụng nhỏ, ta có tập hợp các hàm chuyển đổi giá
trị từ String sang ngày tháng và đóng gói nó vào trong một DLL. Khi
đó, ở một ứng dụng khác, khi có nhu cầu chuyển đổi như trên, thì ta
sẽ không phải viết lại các hàm hoặc đính kèm mã nguồn của các hàm
đó vào chương trình đó nữa mà sử dụng trực tiếp DLL mà ta đã biên
dịch.
Tạo ra khả năng tương tác giữa các ngôn ngữ lập trình
+ Một ứng dụng có thể sử dụng các DLL viết bằng bất cứ ngôn ngữ
lập trình nào. Các nhà phát triển phần mềm chỉ việc đóng gói các
module của mình vào trong một DLL với ngôn ngữ ưa thích, sau đó
module này có thể được sử dụng trong các ứng dụng viết bằng C++
hay Visual Basic.
Dễ dàng đưa ra sự hỗ trợ sau khi đã chuyển giao ứng dụng cho khách
hàng
GVHD: Nguyễn Thị Hữu Phương
8
Đề tài: Tìm hiểu về các file .DLL trong win7
Nhóm 13 – TKT K56
+ Nếu như ta phát hiện có một số thành phần trong ứng dụng cần
phải được thay đổi và sự thay đổi này cần phải được cập nhật cho
khách hàng. Đóng gói và phân phối lại toàn bộ sản phẩm đã bán cho
tất cả các khách hàng của chúng ta là một công việc hết sức khó
khăn. Tuy nhiên ta có thể tránh được điều này nếu như ứng dụng của
ta được thiết kế tốt thành các module và đóng gói chúng trong các
DLL. Khi một module nào đó cần thay đổi, ta chỉ việc đóng gói lại
DLL chứa module đó và gửi tới khách hàng, cho họ cập nhật.
DLL Hell
+ Là khó khăn lớn nhất thỉnh thoảng gặp khi dùng DLL. Ta có thể
gặp những thông báo như:
The ordinal abc could not be located in the dynamic-link library xyz.dll
+ Hoặc khi cài đặt một ứng dụng mới, một số chương trình khác
đang bình thường bỗng nhiên bị trục trặc hoặc thậm chí không thể
nạp lên để chạy được.
+ Đó là các dấu hiệu của DLL Hell trên máy tính của ta. Nguyên
nhân cơ bản của sự cố trên là do chương trình cài đặt không kiểm tra
phiên bản của các DLL trước khi sao lưu nó vào trong thư mục hệ
thống. Khi một DLL mới thay thế một DLL cũ có sẵn, và nếu DLL
mới này có một số thay đổi lớn làm cho nó không thể tương thích
ngược lại với các chương trình sử dụng phiên bản cũ, nó sẽ làm rối
loạn chương trình đó.
Nhược điểm:
Mặc dù hầu hết các ngôn ngữ lập trình đều hỗ trợ việc sử dụng thư viện
liên kết động, nhưng lại có rất ít ngôn ngữ lập trình cho phép tạo ra chúng.
Với việc sử dụng DLL, người ta có thể tập trung nhiều hơn vào các xử lý
logic của hệ thống, mà không cần phải quan tâm đến những xử lý thông
thường, mà nếu phát triển từ đầu, sẽ chi phí rất nhiều thời gian và công sức.
Các công việc này đã được thực hiện bởi một người nào đó, và đóng gói
dưới dạng các DLL.
GVHD: Nguyễn Thị Hữu Phương
9
Đề tài: Tìm hiểu về các file .DLL trong win7
IV.
Nhóm 13 – TKT K56
Khó sử dụng hơn.
Định nghĩa và giải thích về một tập tin .DLL.
Một tập tin thư viện liên kết động (DLL) là một tập tin thực thi cho phép
chương trình để chia sẻ mã và các nguồn lực cần thiết để thực hiện nhiệm vụ
cụ thể. Microsoft Windows cung cấp các tập tin DLL có chức năng và các
nguồn lực cho phép dựa-trên-Windows chương trình để hoạt động trong môi
trường Windows.
DLL thông thường xuất hiện như là các tập tin với một.Phần mở rộng DLL;
Tuy nhiên, họ cũng có thể có một.EXE hoặc phần mở rộng khác. Ví dụ,
Shell.dll cung cấp các đối tượng liên kết và nhúng (OLE) kéo và thả các thói
quen Windows và các chương trình khác sử dụng.
Kernel.exe, User.exe và Gdi.exe là những ví dụ của file DLL với.Mở rộng
EXE. Họ cung cấp mã, dữ liệu hoặc thói quen để chương trình đang chạy trong
hệ điều hành Windows. Ví dụ, một trong những tập tin này cung cấp các chức
năng "CreateWindow" chương trình sử dụng khi một cửa sổ mới được tạo ra
trên màn hình.
Trong Windows, trình điều khiển cài đặt cũng là một DLL. Một chương trình
có thể mở, sử, truy vấn, vô hiệu hóa và đóng trình điều khiển dựa trên hướng
dẫn văn bản trong các tập tin DLL.
DLL có thể được tìm thấy trong thư mục Windows, thư mục Windows\System
hoặc Window\System32 hoặc trong một chương trình thư mục.
Nếu một chương trình được bắt đầu và một trong các tập tin DLL bị thiếu hoặc
bị hư hỏng, bạn có thể nhận được một thông báo lỗi như: "Không thể tìm thấy
xyz.dll". Nếu một chương trình được bắt đầu với một tập tin DLL lỗi thời hoặc
GVHD: Nguyễn Thị Hữu Phương
10
Đề tài: Tìm hiểu về các file .DLL trong win7
Nhóm 13 – TKT K56
tập tin DLL không hạnh phúc, thông báo lỗi "Cuộc gọi đến không xác định
dynalink" có thể được hiển thị. Trong các tình huống, các tập tin DLL phải
được thu được và được đặt trong thư mục thích hợp để cho chương trình để
chạy một cách chính xác.
Bằng cách sử dụng một DLL, một chương trình có thể được modularized thành
phần riêng biệt. Ví dụ, một chương trình kế toán có thể được bán bởi mô-đun.
Mỗi mô-đun có thể được nạp vào chương trình chính tại thời gian chạy nếu
mô-đun đó được cài đặt. Bởi vì các mô-đun riêng biệt, thời gian tải của chương
trình là nhanh hơn, và một mô-đun chỉ được nạp khi chức năng đó được yêu
cầu. Ngoài ra, bản Cập Nhật dễ dàng hơn để áp dụng cho mỗi mô-đun mà
không ảnh hưởng đến các bộ phận khác của chương trình. Ví dụ, bạn có thể có
một chương trình tính lương, và thuế suất thay đổi mỗi năm. Khi những thay
đổi này đang bị cô lập một DLL, bạn có thể áp dụng một bản Cập Nhật mà
không cần phải xây dựng hoặc cài đặt toàn bộ chương trình một lần nữa.
Danh sách sau đây mô tả một số các tập tin được thực hiện như dll trong
Windows hệ điều hành:
Điều khiển ActiveX (.ocx) tập tin.
Một ví dụ của điều khiển ActiveX là một điều khiển lịch mà cho phép
bạn chọn một ngày lịch.
Kiểm soát tập tin bảng điều khiển (.cpl)
Một ví dụ về một tập tin .cpl là một mục mà nằm trong bảng điều khiển.
Mỗi mục là một DLL chuyên ngành.
Tệp trình điều khiển (.drv) thiết bị.
Một ví dụ về một trình điều khiển thiết bị là một trình điều khiển máy in
kiểm soát việc in ấn với máy in.
Một DLL có thể khai báo 2 loại hàm : exported và internal.
Hàm exported có thể được gọi bởi module khác cũng như trong DLL mà
nó khai báo
Hàm internal thường chỉ được gọi từ trong DLL mà nó khai báo.
Mặc dù 1 DLL có thể export dữ liệu, nhưng thường thì chúng chỉ được sử dụng
bởi các hàm bên trong DLL đó. Tuy nhiên, không có gì ngăn cản các module
khác đọc hoặc viết các địa chỉ đó.
DLL cung cấp 1 cách để module hóa ứng dụng, qua đó các hàm của chúng có
thể được cập nhật và sử dụng lại 1 cách dễ dàng.
GVHD: Nguyễn Thị Hữu Phương
11
Đề tài: Tìm hiểu về các file .DLL trong win7
Nhóm 13 – TKT K56
DLL cũng giúp giảm lượng bộ nhớ , vì thay vì một số ứng dụng sử dụng cùng
V.
VI.
1 hàm ở cùng 1 thời điểm, thì mỗi chúng nhận bản sao dữ liệu trong DLL , còn
DLL code sẽ được share.
DLL và cơ chế quản lí bộ nhớ.
Mỗi tiến trình (process) sẽ nạp DLL vào không gian địa chỉ ảo (virtual address
space) của chính tiến trình đó.
Hệ điều điều hành quản lý 1 biến đếm (Count) cho mỗi DLL. Biến Count được
tăng lên 1 khi DLL được nạp (bởi hàm LoadLibrary); và bị giảm đi 1 khi được
giải phóng (bởi hàm FreeLibrary).
Khi biến Count=0 hay process kết thúc, DLL được giải phóng khỏi bộ nhớ.
Các hàm DLL được thực thi trong “ngữ cảnh”của tiểu trình (Thread) gọi hàm,
do đó:
DLL sử dụng Stack của tiểu trình.
DLL sử dụng không gian địa chỉ ảo của tiến trình gọi.
DLL cấp phát bộ nhớ cho những biến động trên không gian địa chỉ ảo
của tiến trình gọi.
Lợi thế DLL.
Danh sách sau đây mô tả một số trong những lợi thế được cung cấp khi sử dụng
một chương trình một DLL:
Sử dụng ít tài nguyên
Khi nhiều chương trình sử dụng cùng một thư viện của các chức năng, một
DLL có thể giảm sao chép mã được tải vào đĩa và bộ nhớ vật lý. Điều này đáng
kể có thể ảnh hưởng đến hiệu suất của không chỉ chương trình đang chạy tại
phía sau, nhưng cũng có các chương trình khác đang chạy trên hệ điều hành
Windows.
Khuyến khích kiến trúc mô-đun
Một DLL giúp thúc đẩy phát triển các mô-đun chương trình. Điều này sẽ giúp
bạn phát triển lớn các chương trình yêu cầu nhiều phiên bản ngôn ngữ hoặc
một chương trình đòi hỏi kiến trúc mô-đun. Một ví dụ về một chương trình
mô-đun là một chương trình kế toán có nhiều mô-đun có thể được tự động nạp
tại thời gian chạy.
Eases triển khai và cài đặt
Khi một chức năng trong một DLL cần một bản Cập Nhật hoặc sửa chữa một,
triển khai và cài đặt các tệp DLL không yêu cầu các chương trình để được
relinked với tệp DLL. Ngoài ra, nếu nhiều chương trình sử dụng cùng một
DLL, nhiều chương trình sẽ được hưởng lợi tất cả từ bản Cập Nhật hoặc sửa
chữa. Vấn đề này thường xuyên hơn có thể xảy ra khi bạn sử dụng một DLL
bên thứ ba mà thường xuyên cập nhật hay súng gắn cứng.
GVHD: Nguyễn Thị Hữu Phương
12
Đề tài: Tìm hiểu về các file .DLL trong win7
VII.
Nhóm 13 – TKT K56
Làm thế nào để xác định nguồn gốc của tập tin DLL
Để xác định số phiên bản, tên công ty hoặc các thông tin khác về một tập tin:
1/Bấm vào Bắt đầu, trỏ tới Tìm, sau đó bấm vào Tệp hoặc Thư mục.
2/Trong hộp Named , nhập tên của tập tin bạn muốn tìm, ví dụ: "shell32.dll" (không
có dấu ngoặc kép), nhấp vào Ổ đĩa cứng địa phương hoặc ký tự ổ đĩa bạn muốn tìm
kiếm trong Tìm trong hộp, và sau đó nhấp vào Tìm thấy bây giờ.
3/Nhấp chuột phải vào tập tin trong danh sách các tìm thấy tệp, bấm thuộc tính, và
sau đó nhấp vào tab Phiên bản .
4/Nếu tập tin là một tập tin Microsoft, trích xuất bản sao mới của các tập tin. Để biết
thông tin về giải nén tệp của Windows, hãy xem bài viết sau trong cơ sở kiến thức
Microsoft:
ID của bài: 129605
Tiêu đề: Làm thế nào để giải nén tập tin nén Windows ban đầu.
Nếu tên công ty được giới thiệu trên các phiên bản tab là khác nhau hơn so với
Microsoft, liên hệ với các nhà sản xuất để được trợ giúp.
VIII.
Quản lí các tập tin DLL trong window.
Việc này nhằm một lẽ duy nhất là tránh các xung đột về phần mềm trong máy tính.
Giả sử bạn có Microsoft Word được cài đặt đúng trong PC, nó hoạt động tốt nhưng sau
khi bạn cài một chương trình mới thì Word bắt đầu có sự cố. Các biểu tượng hiển thị
dưới dạng các đối tượng màu đen, hay những lúc thoát khỏi Word thì Windows lại hiển
thị thông báo lỗi General Protection Fault. Bạn tuy đã thử cài lại Word nhưng tình trạng
trên vẫn tái hiện bởi lỗi này do một nguyên nhân duy nhất, đó chính là vì các tập tin có
phần mở rộng .dll (dynamic – link library: thư viện liên kết động) bị lỗi. Các tập tin thư
GVHD: Nguyễn Thị Hữu Phương
13
Đề tài: Tìm hiểu về các file .DLL trong win7
Nhóm 13 – TKT K56
viện này vốn được sử dụng bởi Windows và nhiều chương trình ứng dụng nhằm thực
hiện một tác vụ nào đó, thí dụ mở tập tin hoặc hiển thị hộp thoại. Windows bao gồm
nhiều tập tin .dll được cài đặt sẵn, nhưng một số trình ứng dụng khác khi cài đặt có thể
thay thế các tập tin .dll hiện có bằng các phiên bản của riêng nó.
Các sự cố xảy ra lúc một trình ứng dụng trên PC sử dụng .dll vốn đã được cập nhật bởi
phần mềm mới và tập tin .dll mới không tương thích với phần mềm trước đây, hoặc tập
tin .dll mới bị hỏng. Việc cài đặt lại các chương trình trước đây cũng không cải thiện
được .
Có trên 700 tập tin .dll trong thư mục \Windows\System. Một chương trình ứng dụng nhỏ
có thể cài đặt khoảng 50 tập tin .dll trong thư mục được chia sẻ này. Và đương nhiên để
tránh tình trạng không mong muốn xảy ra , bạn phải có biện pháp để kiểm tra cũng như
quản lý các tập tin dll của mình:
1. Sao lưu dự phòng thư mục \Windows\System: nếu có chỗ trên ổ đĩa cứng, bạn nên sao
lưu toàn bộ thư mục trên trước khi cài đặt một phần mềm mới. Sau khi cài đặt phần mềm,
nếu một chương trình khác có sự cố thì đã có sẵn tập tin .dll trước đây cho bạn. Tuy
nhiên’ làm thế nào để xác định được tập tin dll nào gây ra sự cố? Trước tiên, hãy đặt câu
hỏi các tập tin dll nào đã bị thay đổi bởi phần mềm mới và các tập tin .dll nào mà phần
mềm cũ sử dụng để thay thế từng tập tin cho đến khi sự cố được xử lý xong?
2. Kiểm soát các tập tin đang được cập nhật lúc cài đặt: bạn phải biết các tập tin nào mà
một chương trình cài đặt ứng dụng đã viết sang \Windows\System hay bất kỳ thư mục
nào và biết các thay đổi đối với tập tin win.ini. Bạn có thể sử dụng phần mềm Norton
CleanSweep (www.symantec.com) chuyên theo dõi chương trình khi cài đặt đã làm
những gì rồi lưu lại thành file để phục vụ cho việc gỡ bỏ sau này. Một tiện ích khác cho
phép bạn xem các tập tin dll đang được nạp trong bộ nhớ là DLL Show của Gregory
Braun (www.gregorybraun.com). Chạy DLL Show lúc một chương trình ứng dụng được
tải. Ví dụ, nếu một chương trình phần mềm ứng dụng gây ra sự cố, hãy sử dụng DLL
Show để liệt kê các tập tin dll vốn có thể bị hỏng. Nếu phần mềm hoạt động một cách
“ngon lành“ trên PC này, nhưng lại tạo ra một lỗi trên PC khác, hãy chạy DLL Show trên
PC đang hoạt động tốt. Ngoài ra, trong chương trình này còn cung cấp cho bạn một bảng
liệt kê 6.118 lỗi của Windows thường hiển thị dưới dạng số hay ký hiệu hay làm ta lúng
túng (Windows>Erros Codes).
3. Một trường hợp xảy ra là khi bạn cài một chương trình phần mềm mới, chương trình
này vì một số lý do thông báo không thể chạy được do thiếu tập tin dll, bạn hãy vào trang
Web: www.dll-files.com để tải tập tin đó về .Đây là một thư viện đồ sộ các tập tin dll hữu
GVHD: Nguyễn Thị Hữu Phương
14
Đề tài: Tìm hiểu về các file .DLL trong win7
Nhóm 13 – TKT K56
ích cho máy tính, nhưng đặc điểm chính của nó là các tập tin dll này hoàn toàn “ zin” và
bạn có thể tin cậy được.
Theo thống kê có khoảng trên 3.100 lỗi sẽ xảy ra nếu thiếu một tập tin dll nào đó hay tập
tin này bị hư. Vì vậy, ngay từ bây giờ, bạn hãy kiểm soát thật tốt máy tính của mình để
hạn chế đến mức thấp nhất những sai sót đó.
IX.
Tìm hiểu một số file.dll thông dụng trong win7.
1. Netshell.dll :
Network Connections Shell (liên quan đến mạng).
•
Thông báo lỗi khi bạn mở các thuộc tính của kết nối mạng: "một lỗi bất
ngờ xảy ra"
Triệu chứng: Khi bạn mở các thuộc tính của kết nối mạng trong cặp kết
nối mạng, bạn có thể nhận được thông báo lỗi sau:
Lỗi bất ngờ xảy ra.
Nguyên nhân: Vấn đề này có thể xảy ra nếu một số thiết đặt đăng ký bị
hư hỏng. Cài đặt đăng ký bị hư hại có thể ngăn cản bạn xem các thuộc
tính của kết nối mạng trong cặp kết nối mạng.
Giải pháp: Để làm việc xung quanh vấn đề này, reregister các tập tin
Netshell.dll. Để làm như vậy, hãy làm theo các bước sau:
1/ Bấm bắt đầu, và sau đó bấm chạy.
GVHD: Nguyễn Thị Hữu Phương
15
Đề tài: Tìm hiểu về các file .DLL trong win7
Nhóm 13 – TKT K56
2/ Trong các mở hộp, gõ regsvr32
%systemroot%\system32\netshell.dll, và sau đó nhấp vào OK.
3/ Trong hộp thoại RegSvr32 , bấm vào OK.
2. Shell32.dll :
Thuộc chương trình Microsoft Windows Shell (liên quan internet, hiệu suất
cpu,bộ nhớ), chứa hầu như tất cả các icon của hệ thống như my computer,
documents,... các hộp thoại hỏi khi delete, download, copy,v.v.... là file quan trọng
hàng đầu khi mod giao diện.
•
Các lỗi Shell32.dll khi bạn khởi động máy tính.
Triệu chứng: Khi bạn khởi động máy tính, Notepad sẽ khởi động và
một hay nhiều tài liệu văn bản có chứa các dòng sau sẽ xuất hiện trên
bàn làm việc của Windows:
[.ShellClassInfo]
LocalizedResourceName=@%SystemRoot
%\system32\shell32.dll,-21787
Nguyên nhân:
Tệp Desktop.ini tồn tại trong một hay nhiều thư mục sau, tại đó ổ đĩa
là ổ đĩa có Windows được cài đặt:
ổ đĩa:\Documents and Settings\All Users\Start Menu\Programs
ổ đĩa:\Documents and Settings\All Users\Start Menu
ổđĩa:\Document
and
Settings\All
User\Start
Menu\Programs\Startup
Tệp Desktop.ini chứa các dòng sau:
[.ShellClassInfo]
LocalizedResourceName=@%SystemRoot
%\system32\shell32.dll,-21787
Giải pháp:
Phương pháp 1: Xóa Tệp Desktop.ini
1/Khởi động Windows Explorer.
2/Trên menu Công cụ, bấm Tuỳ chọn Thư mục, sau đó bấm tab Xem.
3/Trong ô Cài đặt nâng cao, bấm để bỏ chọn hộp kiểm Ẩn phần mở rộng
của các loại tệp đã biết và hộp kiểm Ẩn các tệp hệ điều hành được bảo vệ
(nếu chúng chưa được bỏ chọn), rồi bấm OK.
GVHD: Nguyễn Thị Hữu Phương
16
Đề tài: Tìm hiểu về các file .DLL trong win7
Nhóm 13 – TKT K56
4/Xoá mọi trường hợp của Tệp Desktop.ini có chứa các dòng được mô tả trước
đó trong phần "Hiện tượng" của bài viết này. Để tiến hành:
a. Định vị từng thư mục sau, bấm chuột phải vào tệp Desktop.ini (nếu tệp
tồn tại trong thư mục đó), rồi bấm Mở:
ổ đĩa:\Documents and Settings\All Users\Start Menu\Programs
ổ đĩa:\Documents and Settings\All Users\Start Menu
ổ đĩa:\Documentand Settings\All User\Start Menu\Programs\
Startup
b. Xác nhận tệp có chứa các dòng sau:
[.ShellClassInfo]
LocalizedResourceName=@%SystemRoot
%\system32\shell32.dll,-21787
Nếu tệp có chứa những dòng này, bấm chuột phải vào tệp, bấm Xoá, rồi
bấm Có khi bạn được nhắc xác nhận việc xoá này.
5/ Khởi động lại máy tính của bạn và xác nhận rằng vấn đề được giải quyết.
Phương pháp 2:Sử dụng Tiện ích Cấu hình Hệ thống (Msconfig.exe)
để Tắt Mục Khởi động
1/ Bấm Bắt đầu, rồi bấm Chạy.
2/ Trong ô Mở, gõ msconfig, rồi bấm OK.
3/ Bấm vào tab Khởi động.
4/ Bấm để bỏ chọn hộp kiểm cạnh bất kỳ mục bàn làm việc nào trong cột Mục
Khởi động được liệt kê dưới dạng Khởi động Chung trong cột Vị trí và cũng
được xác định trong bất kỳ vị trí sau (như được đề cập trong cột Lệnh).
ổ đĩa:\Documents and Settings\All Users\Start Menu\Programs
ổ đĩa:\Documents and Settings\All Users\Start Menu
ổ đĩa:\Documentand Settings\All User\Start Menu\Programs\
Startup
5/ Bấm OK để thoát khỏi Tiện ích Cấu hình Hệ thống.
6/ Khởi động lại máy tính của bạn và xác nhận rằng vấn đề được giải quyết.
3. Uxtheme.dll :
Liên quan đến chữ ký số của microsoft. Dùng để cài theme, có ảnh hưởng đến
giao diện chọn theme trong Desktop Properties.
4. Msgina.dll :
Liên quan đến winlogon (nhận dạng người sử dụng), chứa các ảnh bitmap của hộp
thoại shutdown computer.
GVHD: Nguyễn Thị Hữu Phương
17
Đề tài: Tìm hiểu về các file .DLL trong win7
•
Nhóm 13 – TKT K56
"Đăng nhập người dùng giao diện DLL Msgina.dll thất bại để tải" thông
báo lỗi sau khi bạn cài đặt bản Cập Nhật bảo mật MS04-003
Triệu chứng:
Sau khi bạn cài đặt bản Cập Nhật bảo mật MS04-003 được mô tả
trong bài viết cơ sở kiến thức Microsoft 832483, bạn có thể không
thể khởi động máy tính của bạn. Thay vào đó, bạn có thể nhận được
thông báo lỗi sau:
Đăng nhập người dùng giao diện DLL Msgina.dll Lỗi khi nạp. Liên
hệ với người quản trị hệ thống để thay thế DLL, hay khôi phục DLL
gốc.
Nguyên nhân: Vấn đề này có thể xảy ra khi thư mục tạm thời của bạn,
theo quy định của các biến môi trường nhiệt độ, được mã hóa. Cài đặt
bản Cập Nhật bảo mật MS04-003 sử dụng chiết xuất các nội dung của
nó đến một thư mục con của thư mục TEMP. Nếu thư mục tạm thời
được mã hóa, các tập tin Cập Nhật không thành công sao vào thư mục
Windows\System32 khi bạn khởi động lại máy tính của bạn. Một trong
các tập tin cài đặt bản Cập Nhật bảo mật MS04-003 yêu cầu của các tập
tin Microsoft nhận dạng đồ họa và xác thực DLL (Msgina.dll). Các tập
tin Msgina.dll là, lần lượt, theo yêu cầu của các dịch vụ trình.
Giải pháp:
Khôi phục máy tính của bạn đến một nhà nước làm việc
Để khôi phục máy tính của bạn đến một nhà nước làm việc, hãy làm
theo các bước sau:
1/ Khi bạn nhận được thông báo lỗi được mô tả trong phần "Triệu
chứng", hãy nhấp vào khởi động lại.
2/ Nhấn F8 liên tục khi máy tính của bạn bắt đầu để khởi động lại.
Điều này gây ra trình đơn Tùy chọn nâng cao Windows .
3/ Sử dụng các mũi tên trên bàn phím của bạn để chọn Cấu hình
biết đến cuối của tốt, và sau đó nhấn ENTER.
Tự cài đặt bản Cập Nhật bảo mật MS04-003
Để có được và cài đặt bản Cập Nhật bảo mật, hãy làm theo các bước
sau:
GVHD: Nguyễn Thị Hữu Phương
18
Đề tài: Tìm hiểu về các file .DLL trong win7
Nhóm 13 – TKT K56
1/ Tải về Cập Nhật bảo mật MS04-003, và sau đó lưu nó vào máy tính
của bạn. Để biết thêm chi tiết về làm thế nào để tải về bản cập nhật này,
bấm số bài viết sau để xem bài viết trong cơ sở kiến thức Microsoft:
832483 MS04-003: Bộ đệm tràn ngập trong một chức năng MDAC có
thể cho phép thực thi mã.
2/ Cài đặt bản Cập Nhật bảo mật MS04-003 bằng cách chạy các gói cài
đặt với chuyển đổi dòng lệnh /T: . Chuyển đổi này cho phép bạn để xác
định một vị trí không được mật mã cho trình cài đặt để trích xuất nội
dung đóng gói để. Ví d ụ, để cài đặt phiên bản tiếng Anh-ngôn ngữ Cập
Nhật bảo mật MS04-003 cho Intel x 86 trên máy tính, và để giải nén các
tập tin vào thư mục C:\alternate_temp, loại sau tại dấu nhắc lệnh:
file_path\ENU_Q832483_MDAC_x86.EXE /T:C:\alternate_temp
5. Stobject.dll :
Tập tin thư viện, chứa các biểu tượng.
6. Xpsp1res.dll :
Chứa dữ liệu các ứng dụng trong regedit, khi nó xuất hiện trong task manager hãy
kiểm tra lai regedit - đã xuất hiện lỗi.
7. Comdlg32.dll:
Để thay đổi giao diện của hộp thoại Open / Save,
hộp màu, hộp in, tìm kiếm và thay thế...
• Thông báo lỗi: Các tập tin Comdlg32.dll không thể khởi động
Triệu chứng: Khi bạn cố gắng để bắt đầu một chương trình trong Windows,
bạn có thể nhận được một trong các thông báo lỗi sau đây:
Lỗi bắt đầu chương trình. Các tập tin Comctl32.dll không thể khởi động.
Kiểm tra tệp để xác định vấn đề.
Lỗi bắt đầu chương trình. Tệp Comdlg32.dll không thể khởi động. Kiểm
tra tệp để xác định vấn đề.
Lỗi bắt đầu chương trình. Các tập tin Shell32.dll không thể khởi động.
Kiểm tra tệp để xác định vấn đề.
Lỗi bắt đầu chương trình. Các tập tin Lz32.dll không thể khởi động.
Kiểm tra tệp để xác định vấn đề.
Lỗi bắt đầu chương trình. Các tập tin Version.dll không thể khởi động.
Kiểm tra tệp để xác định vấn đề.
Lỗi bắt đầu chương trình. Các tập tin Winmm.dll không thể khởi động.
Kiểm tra tệp để xác định vấn đề.
GVHD: Nguyễn Thị Hữu Phương
19
Đề tài: Tìm hiểu về các file .DLL trong win7
Nhóm 13 – TKT K56
Nguyên nhân: Một số chương trình thay thế tệp của Windows với các tập tin
riêng của họ. Các tập tin Windows Commctrl.dll, Commdlg.dll, Shell.dll,
Lzexpand.dll, Ver.dll, hoặc Mmsystem.dll có thể đã được thay thế bởi các tập
tin từ một chương trình khác.
Giải pháp:
Giải nén các tập tin tương ứng thay cho những được liệt kê trong thông
báo lỗi bạn nhận được. Trong hướng dẫn thực hiện theo, thay thế
<name> với tên của các tập tin thích hợp. Tệp này sẽ là một trong các
tập tin sau đây:
Commctrl.dll cho Comctl32.dll
COMMDLG.dll cho Comdlg32.dll
Shell.dll cho shell32.dll
Lzexpand.dll cho Lz32.dll
Ver.dll cho Version.dll
Mmsystem.dll cho Winmm.dll
Lưu ý: nếu bạn đang sử dụng Windows 98 và Windows 98 bắt đầu, sử
dụng công cụ kiểm tra tệp hệ thống để thay thế các tập tin bị hư hỏng
với một bản sao mới của các tập tin ban đầu. Để biết thông tin về làm
thế nào để sử dụng bộ kiểm tra tệp hệ thống, bấm bắt đầu, hãy nhấp vào
Help, nhấp vào Index tab, gõ "kiểm tra tệp hệ thống" (không có dấu
ngoặc kép), nhấp vào Hiển thị, và sau đó bấm đúp chuột bằng cách sử
dụng kiểm tra tệp hệ thống.
Nếu không, khởi động lại máy tính của bạn để một dấu nhắc lệnh, và
sau đó sao chép các tập tin <name> từ mục Windows\Sysbckup vào thư
mục Windows\System. Điều này sẽ thay thế tệp hiện có với các phiên
bản Windows của tập tin.
</name>
Lưu ý: chương trình thay thế các tập tin <name>với các phiên bản khác
của các tập tin có thể đã thiết lập một số <name>của tập tin thuộc tính.
Nếu bạn đang gặp sự cố khi sao chép các tập tin từ mục tin thư thoại
Windows\Sysbckup để các mục tin thư thoại Windows\System, sử dụng
Window Explorer để kiểm tra các tập tin <name> bất động sản. Nếu các
tập tin của đọc-chỉ, ẩn, hoặc hệ thống thuộc tính lựa chọn, bấm vào các
hộp kiểm để xóa chúng.
Nếu tệp <name>trong cặp Windows\Sysbckup bị hư hỏng hoặc không
phải là các Cập Nhật phiên bản của tập tin, trích xuất một phiên bản mới
của các tập tin từ của bạn bản gốc Windows đĩa hoặc đĩa CD-ROM vào
mục tin thư thoại Windows\System. Để trích xuất đồng gửi mới của các
GVHD: Nguyễn Thị Hữu Phương
20
Đề tài: Tìm hiểu về các file .DLL trong win7
Nhóm 13 – TKT K56
tập tin <name>, bạn cần phải thực hiện một trong các bước sau đây, tùy
thuộc vào các tập tin:
Để biết thông tin về cách sử dụng lệnh chiết xuất để trích xuất một tập
tin, hãy xem bài viết sau trong cơ sở kiến thức Microsoft:
Giải nén các tập tin Kommctrl.dll từ các tập tin Precopy1.cab
để các Windows\System mục tin thư thoại, và sau đó đổi tên
Kommctrl.dll tập tin để Commctrl.dll.
Giải nén các tập tin Commdlg.new từ các tập tin
Win95_11.cab để các Windows\System mục tin thư thoại, và
sau đó đổi tên Commdlg.new tập tin để COMMDLG.dll.
Giải nén các tập tin Shell.new từ các tập tin Win95_11.cab để
các Windows\System mục tin thư thoại, và sau đó đổi tên các
tập tin Shell.new Shell.dll.
Giải nén các tập tin Lzexpand.dll từ các tập tin Precopy1.cab
để các mục tin thư thoại Windows\System.
Giải nén các tập tin Ver.new từ các tập tin Win95_17.cab để
các Windows\System mục tin thư thoại, và sau đó đổi tên các
tập tin Ver.new Ver.dll.
Giải nén các tập tin Mmsystem.dll từ các tập tin
Win95_13.cab để các mục tin thư thoại Windows\System.
Lưu ý: những con số cụ thể các tập tin nén có thể khác nhau từ phiên.
Sử dụng các chuyển đổi/a để tra cứu nội bộ toàn bộ các loại thích hợp
(Precopy hoặc Win95).
8. Comctl32.dll:
Để thay đổi các biểu tượng xuất hiện ở phía trên bên phải của hộp thoại Open /
Save.
• Thông báo lỗi: Các tập tin Comdlg32.dll không thể khởi động
Triệu chứng: Khi bạn cố gắng để bắt đầu một chương trình trong
Windows, bạn có thể nhận được một trong các thông báo lỗi sau
đây:
Lỗi bắt đầu chương trình. Các tập tin Comctl32.dll không thể
khởi động. Kiểm tra tệp để xác định vấn đề.
Lỗi bắt đầu chương trình. Tệp Comdlg32.dll không thể khởi
động. Kiểm tra tệp để xác định vấn đề.
Lỗi bắt đầu chương trình. Các tập tin Shell32.dll không thể
khởi động. Kiểm tra tệp để xác định vấn đề.
GVHD: Nguyễn Thị Hữu Phương
21
Đề tài: Tìm hiểu về các file .DLL trong win7
Nhóm 13 – TKT K56
Lỗi bắt đầu chương trình. Các tập tin Lz32.dll không thể khởi
động. Kiểm tra tệp để xác định vấn đề.
Lỗi bắt đầu chương trình. Các tập tin Version.dll không thể
khởi động. Kiểm tra tệp để xác định vấn đề.
Lỗi bắt đầu chương trình. Các tập tin Winmm.dll không thể
khởi động. Kiểm tra tệp để xác định vấn đề.
Nguyên nhân: Một số chương trình thay thế tệp của Windows với
các tập tin riêng của họ. Các tập tin Windows Commctrl.dll,
Commdlg.dll, Shell.dll, Lzexpand.dll, Ver.dll, hoặc Mmsystem.dll
có thể đã được thay thế bởi các tập tin từ một chương trình khác.
Giải pháp:
Giải nén các tập tin tương ứng thay cho những được liệt kê
trong thông báo lỗi bạn nhận được. Trong hướng dẫn thực
hiện theo, thay thế <name> với tên của các tập tin thích hợp.
Tệp này sẽ là một trong các tập tin sau đây:
Commctrl.dll cho Comctl32.dll
COMMDLG.dll cho Comdlg32.dll
Shell.dll cho shell32.dll
Lzexpand.dll cho Lz32.dll
Ver.dll cho Version.dll
Mmsystem.dll cho Winmm.dll
Lưu ý: nếu bạn đang sử dụng Windows 98 và Windows 98
bắt đầu, sử dụng công cụ kiểm tra tệp hệ thống để thay thế
các tập tin bị hư hỏng với một bản sao mới của các tập tin ban
đầu. Để biết thông tin về làm thế nào để sử dụng bộ kiểm tra
tệp hệ thống, bấm bắt đầu, hãy nhấp vào Help, nhấp vào
Index tab, gõ "kiểm tra tệp hệ thống" (không có dấu ngoặc
kép), nhấp vào Hiển thị, và sau đó bấm đúp chuột bằng cách
sử dụng kiểm tra tệp hệ thống.
Nếu không, khởi động lại máy tính của bạn để một dấu nhắc
lệnh, và sau đó sao chép các tập tin <name> từ mục
Windows\Sysbckup vào thư mục Windows\System. Điều này
sẽ thay thế tệp hiện có với các phiên bản Windows của tập
tin.
</name>
Nếu tệp <name>trong cặp Windows\Sysbckup bị hư hỏng
hoặc không phải là các Cập Nhật phiên bản của tập tin, trích
xuất một phiên bản mới của các tập tin từ của bạn bản gốc
Windows đĩa hoặc đĩa CD-ROM vào mục tin thư thoại
GVHD: Nguyễn Thị Hữu Phương
22
Đề tài: Tìm hiểu về các file .DLL trong win7
Nhóm 13 – TKT K56
Windows\System. Để trích xuất đồng gửi mới của các tập tin
<name>, bạn cần phải thực hiện một trong các bước sau đây,
tùy thuộc vào các tập tin:
Để biết thông tin về cách sử dụng lệnh chiết xuất để trích xuất
một tập tin, hãy xem bài viết sau trong cơ sở kiến thức
Microsoft:
Giải nén các tập tin Kommctrl.dll từ các tập tin
Precopy1.cab để các Windows\System mục tin thư
thoại, và sau đó đổi tên Kommctrl.dll tập tin để
Commctrl.dll.
Giải nén các tập tin Commdlg.new từ các tập tin
Win95_11.cab để các Windows\System mục tin thư
thoại, và sau đó đổi tên Commdlg.new tập tin để
COMMDLG.dll.
Giải nén các tập tin Shell.new từ các tập tin
Win95_11.cab để các Windows\System mục tin thư
thoại, và sau đó đổi tên các tập tin Shell.new Shell.dll.
Giải nén các tập tin Lzexpand.dll từ các tập tin
Precopy1.cab để các mục tin thư thoại
Windows\System.
Giải nén các tập tin Ver.new từ các tập tin
Win95_17.cab để các Windows\System mục tin thư
thoại, và sau đó đổi tên các tập tin Ver.new Ver.dll.
Giải nén các tập tin Mmsystem.dll từ các tập tin
Win95_13.cab để các mục tin thư thoại
Windows\System\.
Lưu ý: những con số cụ thể các tập tin nén có thể khác nhau
từ phiên. Sử dụng các chuyển đổi/a để tra cứu nội bộ toàn bộ
các loại thích hợp (Precopy hoặc Win95).
9. Stobject.dll:
Để thay đổi biểu tượng âm lượng và một số biểu tượng trong khay hệ thống.
10. mydocs.dll:
Để thay đổi biểu tượng My Documents.
11. shdocvw.dll:
Để thay đổi biểu tượng và đồ họa Internet Explorer 6.
12. IEFrame.dll:
GVHD: Nguyễn Thị Hữu Phương
23
Đề tài: Tìm hiểu về các file .DLL trong win7
Nhóm 13 – TKT K56
Để thay đổi biểu tượng và đồ họa Internet Explorer 7.
• Lỗi “Res://ieframe.dll/dnserror.htm#”
Triệu chứng: Lỗi ieframe.dll khá là khác nhau và thật sự phụ thuộc vào
nguyên nhân của vấn đề. Một vài trong những thông báo lỗi ieframe.dll phổ
biến nhất như sau:
- “Res://ieframe.dll/dnserror.htm#","File Not Found
- C:\WINDOWS\SYSTEM32\IEFRAME.DLL”…
Những kiểu lỗi ieframe.dll “not found” hay “missing” thường gặp nhất xảy ra
khi sử dụng Internet Explorer 7 hay Visual Basic 6. Thông báo
"Res://ieframe.dll/dnserror.htm" và những thông báo liên quan thường gặp hơn
và hiện ra trong cửa sổ trình duyệt Internet Explorer 7.
Nguyên nhân: Lỗi ieframe.dll liên quan đến IE 7. Trong nhiều trường hợp,
cài đặt IE 7 sẽ gây ra lỗi này. Những nguyên nhân khác bao gồm virus,
Windows Update, thiết lập sai firewall, phần mềm bảo mật quá hạn…
Giải pháp: Trong bất cứ tình huống nào, bạn cũng đừng download file
ieframe.dll từ các site. Vì nhiều lý do đã được nêu ở trên. Nếu bạn đã
download, hãy xóa nó đi. Làm theo 1 trong các phương pháp sau để khắc
phục lỗi:
1. Khởi động lại máy tính.
2. Cài đặt bản mới nhất của Internet Explorer. Cho dù bạn thiếu file ieframe.dll
hay gặp thông báo lỗi về nó, cài lại hoặc nâng cấp bản mới nhất của Internet
Explorer sẽ giải quyết mọi vấn đề với file ieframe.dll.
3. Bạn đang dùng Visual Basic 6 để lập trình ? Đừng lo, đổi reference trong
Microsoft Internet Controls từ ieframe.dll thành shdocvw.ocx. Lưu project lại
rồi mở nó sau.
4. Khởi động lại router, switch, modem và bất cứ thứ gì dùng để kết nối
Internet hay các máy tình khác trong đường mạng của bạn. Nếu vấn đề nằm ở
những thứ này thì khởi động lại có thể giải quyết được.
5. Quét virus trên máy tính. Thỉnh thoảng lỗi ieframe.dll là do máy bạn nhiễm
virus.
6. Tắt Windows Firewall trong Windows XP nếu bạn đã cài firewall khác.
Chạy 2 ứng dụng firewall cùng lúc có thể gây nên sự cố nên nếu bạn có các
GVHD: Nguyễn Thị Hữu Phương
24
Đề tài: Tìm hiểu về các file .DLL trong win7
Nhóm 13 – TKT K56
phần mềm như ZoneAlarm, Norton Personal Firewall, Comodo Firewall…, sau
đó bạn không nên chạy đồng thời firewall của Windows.
Chú ý: Cho dù bạn khẳng định Windows firewall đã bị tắt, hãy kiểm tra lại.
Vài chương trình bảo mật của Microsoft có thể tự động bật firewall.
7. Update tất cả những firewall không phải của Microsoft và những phần mềm
bảo mật khác.
Lưu ý: Nếu bạn đã dùng bản mới nhất của phần mêm bảo mật, hãy thử xóa nó
đi rồi cài lại. Việc cài lại có thể chặn được thông báo lỗi ieframe.dll.
8. Đến trang Windows Update ( và cài
bất cứ bản cập nhật nào mà Microsoft đề nghị. Có thể những bản nâng cấp
trước đó của Microsoft đã gây ra lỗi, cài bản nâng cấp có thể giải quyết.
9. Xóa các file temporary trong Internet Exploer 7. Vài lỗi ieframe.dll có thể
do các file temporary.
10. Tắt các add-on của Internet Exploer 7 từng cái một. Một trong số các addon có thể là nguyên nhân gây lỗi.
11. Thiết lập bảo mật của Internet Exploer 7 về mặc định. Vài chương trình, kể
cả các bản cập nhật của Microsoft thỉnh thoảng thay đổi các thiết lập bảo mật.
12. Đưa thư mục IE7 Temporary Files về vị trí mặc định trong Windows XP.
Nếu thư mục Temporary Internet Files bị di chuyển khỏi vị trí ban đầu, cho dù
có bật cả Protected Mode lẫn Phishing Filter, lỗi ieframe.dll vẫn sẽ xảy ra.
13. Tắt Phishing Filter trong IE 7. Đây không phải ý hay nếu bạn không cài
phishing filter khác, nhưng trong vài trường hợp nó giúp giải quyết lỗi
ieframe.dll.
14. Tắt Protected Mode trong IE 7. Trong vài trường hợp cụ thể, nó giúp giải
quyết lỗi ieframe.dll.
13. shimgvw.dll:
Để thay đổi các biểu tượng tập tin hình ảnh, tức là, BMP, JPG, JPEG, GIF, vv.
GVHD: Nguyễn Thị Hữu Phương
25