Làm thế nào tôi có thể tìm ra chương trình nào được cài đặt hoặc đang sử dụng một tệp DLL cụ thể?


9

Tôi đã có một tệp DLL trong thư mục HỆ THỐNG của một máy chủ, mà tôi không chắc là tôi thực sự cần.

Google đã cho tôi biết nó thường được sử dụng để làm gì, nhưng phần mềm chưa bao giờ được cài đặt trên hệ thống này. Tuy nhiên, tôi cho rằng có thể một trong những sản phẩm được cài đặt khác trên máy chủ có thể đã bao gồm (và do đó, giả định, sẽ yêu cầu) tệp.

Tôi đã thực hiện tìm kiếm thông qua Sổ đăng ký tên của tệp và cũng cho một số chuỗi tôi tìm thấy trong siêu dữ liệu của tệp và tôi không thể tìm thấy bất kỳ thông tin nào. (Mặc dù khóa ACMru đã bắt mắt tôi, cho đến khi tôi tìm ra nó dùng để làm gì .)

Tôi có thể làm gì khác không, để hệ thống tự cho tôi biết chương trình nào đã cài đặt DLL và / hoặc chương trình đã cài đặt (nếu có) sẽ sử dụng chương trình nào?

LƯU Ý: Đề xuất công cụ rất hay, nhưng tôi sẽ không cài đặt hoặc chạy bất kỳ phần mềm bổ sung nào trên hệ thống này. Tôi cần làm việc với bất cứ thứ gì có sẵn trên bản cài đặt mặc định của Server 2003.

Câu trả lời:


5

Tôi sẽ kiểm tra ngày nó được đặt trên hệ thống và so sánh với các tệp khác trong hệ thống để lấy manh mối. Tìm kiếm sẽ cho phép bạn tìm kiếm toàn bộ hệ thống theo ngày.

Ngoài ra, đăng tên của tệp ở đây sẽ cho phép một số người ở đây có thể quen thuộc với nó để ID nó cho bạn.


Cảm ơn. Tôi có thể đăng tên tập tin trong một câu hỏi khác. Tôi muốn cái này là chung chung để nó có được câu trả lời có thể được sử dụng cho bất kỳ tệp DLL nào.
Iszi

4

Bạn có khả năng có thể kiểm tra từng tệp .MSI trong thư mục% SystemRoot% \ Installer. Tất cả các chương trình (?) Được cài đặt thông qua trình cài đặt Windows sẽ thêm MSI của chúng vào đây để chúng có thể được cài đặt sau đó. Các thư mục thường có rất nhiều thứ. Nếu / Một khi bạn tìm thấy dll trong số vô số các gói MSI, bạn sẽ phải ánh xạ gói đó trở lại một tên được xác định rõ.

Để dịch ngược các tệp msi bằng tập lệnh, bạn có thể thử sử dụng công cụ VBS này http://www.hanselman.com/blog/HowToListAllTheFilesInAnMSIInstallerUsingVBSciript.aspx hoặc bạn có thể dùng thử chương trình có tên MSIDiff (mà tôi chưa từng sử dụng) http: //dennisbareis.com/msidiff.htmlm . Tất nhiên, xem xét các ràng buộc của việc không phải cài đặt các công cụ, công việc sau này sẽ không cần thiết trong vấn đề đó. Cái trước sẽ nếu cscript được cài đặt.

Công cụ thứ hai có thể thực hiện ánh xạ tên gói cho bạn mà không cần phải tìm kiếm thủ công sổ đăng ký để tìm tên tệp GUID hoặc MSI phù hợp. Công cụ cũ có thể được sửa đổi để kết xuất tên gói nếu bạn biết bảng / cột nào cần tham chiếu (tôi không biết).

Kịch bản VBS chỉ đơn giản kiểm tra tệp MSI từ góc độ cơ sở dữ liệu. Công việc chính được thực hiện với: cơ sở dữ liệu.OpenView ("CHỌN Tên tệp TỪ tệp").


Đây không phải là rất tốn kém để làm, giống như cài đặt tất cả chúng? Trên Windows 8 của tôi có 412 mục, trên Windows 7 của tôi là 559 và tôi nghĩ anh ta có số tiền tương đương. Ngoài ra, tệp có thể không đến từ bản msicài đặt ...
Tamara Wijsman

Vâng, nó rất tốn kém, nhưng đối với các tình huống mà bạn muốn biết quyền sở hữu mà không có tầm nhìn xa để chụp nhanh hệ thống trước và sau, điều này có thể cung cấp một số thông tin chi tiết. Bạn cũng có thể tự động hóa chức năng dịch ngược và so sánh thực tế (rốt cuộc đó chỉ là tập lệnh vbs). Tôi đồng ý rằng đây không phải là một giải pháp hoàn hảo vì không phải tất cả các gói đều được cài đặt thông qua MSI, nhưng bạn có thể gặp may mắn. Như bạn đã nói, có rất nhiều trong số họ, vì vậy tỷ lệ cược là tập tin có thể đã đi qua theo cách đó.
logicscope

Tôi tự hỏi nếu có những công cụ chỉ có thể nhìn vào bên trong các tệp MSI chứ không phải dịch ngược / giải nén chúng. Dù sao đi nữa, trong một câu hỏi mới khác, OP đã nói rằng chúng ta đang nói về một tệp đã có trên hệ thống của chúng ta từ lúc cài đặt ...
Tamara Wijsman

Tom, tôi khá chắc chắn rằng vbs này chỉ đơn giản là kiểm tra MSI từ chế độ xem cơ sở dữ liệu. MSI chỉ đơn giản là một db. Công cụ này sử dụng SQL để trích xuất tên tệp từ bảng thích hợp. Nó không "dịch ngược" theo từng se và tôi nên đã chỉ định điều này trong bài viết của mình. Tôi sẽ sửa lại.
logicscope

1

Giám sát quá trình có thể làm điều này cho bạn. Chỉ cần lọc theo tên của DLL và khi một chương trình cố gắng tải nó, sẽ có một mục trong đó đề cập đến quá trình nào đang tìm kiếm và / hoặc truy cập vào DLL mà bạn đã đề cập.

Bạn cũng nên thử thực hiện nhật ký khởi động (bật ghi nhật ký khởi động trong menu, sau đó khởi động lại và mở lại trình giám sát quy trình), điều cần thiết để bắt các chương trình và dịch vụ tải nó khi khởi động.


Điều gì về bất kỳ chương trình không hoạt động? Có vẻ như tôi phải mở mọi chương trình nghi ngờ trên máy tính và coi chừng nó trong Process Monitor.
Iszi

@Iszi: Như đã đề cập trên trò chuyện, việc liệt kê chúng hoặc trình cài đặt của chúng sẽ mất nhiều thời gian. Hoặc theo dõi thụ động như đã đề cập, tích cực với Process Explorer. Hoặc tìm kiếm như music2myear đã đề cập, có thể dễ dàng thực hiện với Tìm kiếm mọi thứ.
Tamara Wijsman
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.