2008-10-30 22 views
13

Bir sistem aygıtını C# .NET'ten devre dışı bırakmanın bir yolu var mı.Bir sistem aygıtını nasıl devre dışı bırakırım?

Aygıt Yöneticisi'ne gittiğinizde ve bir aygıtı bu şekilde devre dışı bıraktığınızda temel olarak taklit etme?

Çağırdığım bir WinAPI işlevi olduğunu varsayıyorum, ancak hangisini bilmiyorum?

Bunu yapmamın nedeni, aygıtı tekrar etkinleştirdikten sonra devre dışı bırakmam ve düzelmem gerekmesi.

Windows XP ve Vista'da (x86 & x64) çalışmam gerekiyor. "DevCon" adlı bir şeye baktım ama Vista x64 üzerinde çalışmıyor gibi görünüyor.

Teşekkürler. yanıt için

buraya bakın: How do I disable a system device programatically?

cevap

11

CodeProject de Bu makale, bunu başarmak için bazı gerçekten şık C# kodu vardır:

http://www.codeproject.com/KB/cs/HardwareHelper.aspx

Sonunda sadece gibi bir çağrı yapmak :

HH_Lib hwh = new HH_Lib(); 

hwh.SetDeviceState("MyDevice", /*Enable*/ true); 
hwh.SetDeviceState("MyDevice", /*Disable*/ false); 

alt text

+0

Bu, Vista x64 için çalışmaz (bkz. Soruya verdiğim yanıt). Teşekkürler. – Cheetah

+0

Sunucu 2008 x86 için çalışmıyor –

9

Mel Green'in cevabını öğrenmek için donanım yardımcı kitaplığı, Windows API (setupapi), özellikle de SetupDiSetClassInstallParams yöntemini çağırmak için birlikte çalışır. Tabii ki, cihaz ayrıntılarına bakmak için kullanılan başka çağrılar da var.

Standart kullanıcı veya ayrıcalıklı bir hesap olarak çalıştırıyorsanız, bunu kontrol etmek için kullanamayacağınızı göz önünde bulundurun./devre dışı vb) donanım aygıtları. Daha fazla ayrıntı için

http://www.pinvoke.net bir göz (ve spesifik arama için: http://pinvoke.net/default.aspx/setupapi.SetupDiSetClassInstallParam)

4

Bu eski bir soru olduğunu biliyorum ama aynı sorunla karşıya geldi. Bunu çözmek için TechNet wiki adresindeki yeni DevCon'u kullanmam gerekiyordu. CodeProject makalesi yardımcı oldu, ancak sonuçta güncellenen DevCon'a güvenmek daha kolaydı. Ne yazık ki sadece 600mb'den fazla olan Windows Driver Kit modelinde mevcut görünüyor.

İlgili konular