Tôi đang cố gắng đưa ra giải pháp để kích hoạt/vô hiệu hóa card mạng theo lập trình - Tôi đã thực hiện rất nhiều nghiên cứu và không có gì là giải pháp khả thi trong cả môi trường XP và Vista . Những gì tôi đang nói về là nếu bạn đi vào Control Panel 'Network Connections', nhấp chuột phải vào một và chọn kích hoạt hoặc vô hiệu hóa. Lý tưởng nhất là tôi muốn sử dụng một thư viện, nhưng nếu tồi tệ hơn đến tồi tệ hơn tôi nghĩ tôi có thể gọi ra một ứng dụng dòng lệnh, nhưng đó là trường hợp xấu nhất tuyệt đối. Đây là những gì tôi đã cố gắng cho đến nay và ở đâu/tại sao họ thất bại:Lập trình vô hiệu hóa/kích hoạt giao diện mạng
này bài trước:
How to programmatically enable/disable network interfaces? (Windows XP)
Lists một vài phương pháp - là người đầu tiên được sử dụng netsh, mà dường như là giống nhau khi sử dụng hàm IPHelper SetIfEntry(). Vấn đề với điều này là nó thiết lập giao diện như được kích hoạt hoặc vô hiệu hóa, không phải là bình thường được kích hoạt/vô hiệu hóa vì vậy nó không thực sự tắt NIC.
Một giải pháp đề xuất là sử dụng WMI và trong lớp Win32_NetworkAdapter Đặc biệt, trong đó có một Enable và Disable phương pháp:
http://msdn.microsoft.com/en-us/library/aa394216(VS.85).aspx
lớn phải không? Hoạt động tốt trong Vista, những phương pháp này không tồn tại trong cài đặt XP bình thường ...
Một gợi ý khác là sử dụng DevCon, thực sự sử dụng SetupAPI, cụ thể là SetupDiSetClassInstallParams() với DICS_ENABLE. Sau khi chi tiêu vô số giờ với lớp tuyệt vời này, và cố gắng vô hiệu hóa/kích hoạt thiết bị ở cấp độ toàn cầu cũng như mức cấu hình cụ thể (và mọi kết hợp), nó không liên tục hoạt động - đôi khi hoạt động tốt, nhưng lần khác vô hiệu hóa thiết bị trong Trình quản lý Thiết bị, nhưng vẫn để thiết bị đó hoạt động trong Kết nối Mạng.
sau đó tôi đã cố gắng sử dụng giao diện INetConnection, cụ thể INetConnection-> Connect/Disconnect:
http://msdn.microsoft.com/en-us/library/aa365084(VS.85).aspx
Nhưng tôi đã không bao giờ có thể có được điều này để có bất kỳ ảnh hưởng đến các kết nối ở hai Vista hoặc XP của tôi hộp kiểm tra.
Cuối cùng, tôi thấy điều này C# kịch bản gọi là ToggleNic:
http://channel9.msdn.com/playground/Sandbox/154712/
Mà có vẻ như nó đang diễn ra thông qua việc Shell bằng cách nào đó để gây ra một cách hiệu quả các hành vi chuột phải. Hạn chế (ít nhất là việc thực hiện này) là nó không hoạt động (không sửa đổi) trên các hệ thống không phải tiếng Anh, mà tôi cần tôi làm việc. Để công bằng, giải pháp này trông giống như khả thi nhất, nhưng sự quen thuộc của tôi với C# là thấp và tôi không thể tìm thấy nếu API nó đang sử dụng có sẵn trong C + +.
Bất kỳ trợ giúp hoặc thông tin chi tiết nào sẽ được đánh giá rất nhiều - hoặc các ý tưởng về cách thực hiện những gì mà tập lệnh togglenic thực hiện trong C++. Cảm ơn!
Tôi đã tìm thấy giải pháp ToggleNIC rất đáng tin cậy, nhưng thật thú vị, tôi chỉ thấy văn bản "Bật giao diện .." một số thời gian, điều này khá bực bội. – bjanaszek