Khi phần mềm diệt vi-rút đang chạy trong khi cài đặt phần mềm của tôi, một số thành phần nhất định không được cài đặt đúng cách. Tôi luôn yêu cầu người dùng tắt TẮT trước. Nhưng, họ quên mất và sau đó tôi đang cố gắng tìm ra những gì đã xảy ra. Có một chức năng Delphi mà bất cứ ai biết về điều đó có thể phát hiện xem phần mềm AntiVirus có đang chạy hay không, vì vậy tôi có thể cảnh báo cho người dùng trước khi cài đặt bắt đầu?Delphi - Làm thế nào tôi có thể phát hiện sự hiện diện của Phần mềm chống vi-rút?
Trả lời
Vì XPsp2, có trung tâm bảo mật đăng ký nếu có một chương trình chống vi-rút đã biết.
Afaik chức năng này trên api WMI, có thể được truy cập thông qua Winapi. (và Jedi có tiêu đề cho nó).
Tôi đã tìm thấy một số VBScript đây: http://blogs.msdn.com/b/alejacma/archive/2008/05/12/how-to-get-antivirus-information-with-wmi-vbscript.aspx
Một mẹo: cố gắng giao tiếp với người dùng của bạn trong bất kỳ cách có thể để tắt quét dựa trên kinh nghiệm càng nhiều càng tốt. Đây thường là nguyên nhân dẫn đến sai tích cực, và nó có thể là một thông điệp dễ dàng hơn mang lại hơn là giết chết tất cả các phần mềm diệt virus.
Đảm bảo bạn đọc nhận xét, vì đoạn mã chính xác đó sẽ không hoạt động như Vista SP1 - chúng đã xóa không gian tên bạn cần. –
Có các lựa chọn thay thế trong các nhận xét. Không ai trong số họ là đẹp, nhưng toàn bộ tình huống này không phải. (như tôi đã nói, cài đặt và "trên" cũng là những thứ khác nhau) –
Tôi phải công khai thừa nhận rằng tôi đã downvoted nó. Đó là một ý tưởng kinh khủng, khủng khiếp để đưa người dùng giảm lượng bảo vệ mà họ cung cấp. Hãy nhớ rằng: 100 sai tích cực vẫn tốt hơn một âm tính giả, và thường, heuristics là * tốt *. –
Chúng tôi đã thành công bằng cách kiểm tra các quy trình đang chạy cho bất kỳ quy trình nào mà chúng tôi đã xác định trước đó là chương trình AV. (Bạn có thể liệt kê một danh sách các quá trình sử dụng một số mã đơn giản mà bạn có thể tìm thấy bằng cách googling Processes một cái gì đó Danh sách Chạy Delphi)
Nếu chúng ta tìm thấy một, chúng tôi nói với người sử dụng và từ chối tiếp tục ...
Xây dựng danh sách các quy trình mà chúng tôi biết là AV, chúng tôi cài đặt các phiên bản dùng thử của các chương trình AV và sau đó xem danh sách các quy trình (trong trình quản lý tác vụ hoặc sử dụng mã quy trình liệt kê của chúng tôi.) Không khó để phát hiện ra chúng .. và bạn có thể tắt các chương trình AV và xem liệu các quy trình bạn nhận dạng có biến mất hay không. (Process Explorer là hữu ích: http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx)
Ví dụ, một số quá trình chúng tôi hiện đang tìm kiếm bao gồm MCShield (McCaffe), nProtect (Norton), PCCNTMON (Trend Micro) vv
Rõ ràng won này' t bắt TẤT CẢ các chương trình AV, nhưng nếu bạn làm như vậy với các nhà cung cấp chính (Norton, McCaffe, Trend Micro, ZA, vv), bạn sẽ có một tỷ lệ lớn các chương trình AV trong lĩnh vực được bảo hiểm.
Một điều đó là tốt đẹp về này là nó rất dễ dàng để thực hiện và không đòi hỏi bất kỳ cấp độ cuộc gọi Windows API thực sự thấp, ngoại trừ để liệt kê các tiến trình đang chạy ...
Darn dễ vỡ - bạn nên tắt * luôn * hiển thị màn hình giật gân (* không * trông giống như EULA hoặc bất kỳ điều gì) cho người dùng biết rằng đang chạy chương trình diệt vi-rút phần mềm có thể có vấn đề trong khi cài đặt. – snemarch
thành phần nhất định không được cài đặt chính xác
Giải thích những thành phần bạn đang cài đặt, cách bạn cài đặt các thành phần đó và cách cài đặt của chúng không thành công và sẽ dễ dàng đề xuất giải pháp hơn. Ngoài ra, bạn có đang sử dụng sản phẩm cài đặt hay mã cài đặt của riêng mình không? Nếu đó là trình cài đặt của riêng bạn, hoặc nếu bạn có thể tự động chạy mã của riêng mình sau trình cài đặt, bạn có thể thực hiện kiểm tra có lập trình của riêng mình để xác nhận cài đặt của mình là 100% OK và nếu không thì hãy báo cáo lỗi nào và nhắc người dùng tắt chương trình diệt vi-rút và thử cài đặt lại.
Tôi vừa viết trên blog một bài viết, cho bạn biết cách phát hiện sự hiện diện của phần mềm chống vi-rút trong các ấn bản Windows Desktop (XP, Vista và 7).
Getting the installed Antivirus, AntiSpyware and Firewall software using Delphi and the WMI
tôi thấy rằng đây là một "cũ" câu hỏi, nhưng ... tôi tìm thấy nó Retreive Antivirus Information using WMI
Trong khi điều này về lý thuyết có thể trả lời câu hỏi, [nó sẽ là thích hợp hơn] (http://meta.stackexchange.com/q/8259) để bao gồm các phần thiết yếu của câu trả lời ở đây, và cung cấp liên kết để tham khảo. – Jack
- 1. Làm thế nào để phát hiện sự hiện diện của bàn phím phần cứng?
- 2. Phát hiện phần mềm AdBlocking?
- 3. Làm thế nào để phát hiện sự hiện diện và vị trí của JVM trên Windows?
- 4. Tôi có thể tìm phần mềm phát hiện khuôn mặt, thuật toán, v.v ... ở đâu?
- 5. Làm thế nào tôi có thể phát hiện tất cả các giao diện một đối tượng COM thực hiện?
- 6. Cách phát hiện sự hiện diện của một số thiết bị nhất định
- 7. Phát hiện phần mềm độc hại chữ ký
- 8. Làm cách nào để phát hiện trình gỡ lỗi hoặc công cụ khác có thể đang phân tích phần mềm của tôi?
- 9. Các mẫu thiết kế phần mềm nào làm các khuôn khổ GUI phổ biến hiện diện?
- 10. Làm cách nào để mã của tôi tồn tại? (chống phần mềm thối)
- 11. Ứng dụng android của tôi bị phát hiện là phần mềm độc hại bởi Avast
- 12. Làm cách nào để phát hiện xem IDE Delphi cụ thể có đang chạy không?
- 13. Làm thế nào để phát hiện sự thay đổi độ phân giải màn hình trong Delphi?
- 14. Làm cách nào để phát hiện lại Bộ nhớ Flash USB bằng phần mềm?
- 15. Làm thế nào tôi có thể phát hiện hệ điều hành trong Perl?
- 16. Làm thế nào tôi có thể biết liệu một điều khiển Delphi hiện có thể nhìn thấy?
- 17. Làm thế nào tôi có thể phát hiện một nút chuột được giữ trên một PictureBox?
- 18. Làm thế nào tôi có thể phát hiện khi một thư mục được gắn với inotify?
- 19. Phát hiện sự hiện diện của nội dung stdin trong tập lệnh shell
- 20. Phần mềm chống vi-rút Windows Server 2008 có API
- 21. Làm thế nào tôi có thể proctect ứng dụng .NET của tôi chống lại DLL Hijacking?
- 22. Làm thế nào tôi có thể phát hiện được cài đặt Sun/Oracle JRE trên Windows?
- 23. Làm thế nào để có được IzPack để kiểm tra cho một phiên bản hiện tại của phần mềm?
- 24. Cách tốt nhất để phát hiện sự hiện diện của SMO là gì?
- 25. Thuật toán để phát hiện sự hiện diện của văn bản trên hình ảnh
- 26. Làm cách nào để phát hiện sự hiện diện của Thanh cuộn (sử dụng Javascript) trong HTML iFrame?
- 27. xác thực sự hiện diện của has_and_belongs_to_many
- 28. Cách phát hiện sự hiện diện của người dùng trong Android?
- 29. Ứng dụng Android của tôi có thể phát hiện cuộc gọi bị rơi như thế nào?
- 30. jQuery: Làm thế nào tôi có thể phát hiện nếu html đã thay đổi trong một phần tử đã cho?
Thú vị vấn đề - những loại phần mềm bạn đang viết? –
Nếu đây là một vấn đề định kỳ, tôi muốn nói vấn đề có lẽ là trình cài đặt của bạn. Lưu ý rằng vì sự tuyệt vời của Delphi khi tạo ra exe độc lập mà không cần thời gian chạy cồng kềnh, rất nhiều virii và phần mềm độc hại được viết trong đó. Vì vậy, nó khá thường xuyên mà phần mềm chống virus dấu vân tay một số phần của một vi rút thats cũng được tìm thấy trong các chương trình delphi khác. Chỉ đơn giản là tắt tính năng chống vi-rút của bạn sẽ không giúp ích gì - nó chỉ can thiệp ngay khi nó được bật lại. – GrandmasterB
@GrandmasterB: ... thay vì dựa vào thời gian chạy cồng kềnh, delphi tạo ra các tập tin thực thi cá nhân --ber-bloated - tất nhiên là tuyệt vời hơn nhiều so với một thời gian chạy lớn và các tệp thực thi riêng lẻ nhỏ. – snemarch