Laden...

[erledigt] Hardware deaktivieren/aktiieren

Erstellt von marmey vor 16 Jahren Letzter Beitrag vor 16 Jahren 4.910 Views
M
marmey Themenstarter:in
47 Beiträge seit 2007
vor 16 Jahren
[erledigt] Hardware deaktivieren/aktiieren

Da ich Probleme bekomme, wenn ich mein UMTS-Router und die ISDN Verbindung gleichzeitig am PC offen habe, habe ich bisher bei der Einwahl per ISDN vorher im Gerätemanager einfach meine Netzwerkkarte deaktiviert und danach wieder aktiviert.

Das find ich nun aber ein wenig umständlich und ich wollt mir ein kleines Ein-Knopf-Programm schreiben, welches das übernimmt.

Leider hat meine MSDN und Forumsuche mit "Hardware (Gerät) deaktivieren/aktivieren) etc. nichts gescheites zutage gefördert. Hat jemand nehn Tip/Idee/Schlagwort oder Code nach dem ich suchen könnte?

345 Beiträge seit 2005
vor 16 Jahren

Vielleicht kannst Du ja einfach einen Dienst (per net) deaktivieren oder vielelicht gibts auch ne ipconfig-alternative?

Mein Haus, mein Viertel, mein Blog

M
marmey Themenstarter:in
47 Beiträge seit 2007
vor 16 Jahren

Also bei ipconfig konnte ich keine entsprechenden Parameter finden und unter Dienste gibt es zwar "Netzwerkverbindungen" als Dienst aber wenn ich den über msconfig probeweise abschalte, muss ich immer neustarten und neustarten wäre zu Zeitaufwenig.

Es muss doch eine Möglichkeit geben, das was ich manuel per Mausklick im Gerätemanager mache (Gerät aktivieren/deaktivieren) auch per Befehl zu erreichen?

B
1.529 Beiträge seit 2006
vor 16 Jahren

WMI, Namespace root\CIMV2, Klassen Win32_PnpSignedDriver & Win32_SystemDriver, Methoden StartService & StopService

M
marmey Themenstarter:in
47 Beiträge seit 2007
vor 16 Jahren

Vielen Dank jetzt find ich auch in der MSDN etwas.

Hab da aber gleich noch eine Frage, da steht ja auch Namespace root/cimv2 und nun wollte ich das Namespace einbinden mit using aber weis nicht wie, root und cimv2 kennt mein C#2005 Express nicht. Ist das so eine WinApi-Sache? Wenn ja wie bekomme ich das dan in C# rein?

B
1.529 Beiträge seit 2006
vor 16 Jahren

Such mal hier im Forum nach "WMI Code Creator" und lade den herunter. Der sollte alle weiteren Fragen bezüglich der Verwendung von WMI beantworten.

M
marmey Themenstarter:in
47 Beiträge seit 2007
vor 16 Jahren

Danke, dass hilft mir wirklich weiter. Jetzt werde ich erst einmal ein wenig probieren.

M
marmey Themenstarter:in
47 Beiträge seit 2007
vor 16 Jahren

Jetzt gehn die Probleme weiter und vielleicht kann mir ja einer helfen. Mit dem WMI Code Generator habe ich herausgefunden, dass Win32_PnpSignedDriver & Win32_SystemDriver meine Netzwerkkarte nicht kennen. Habe mir da alle Devices listen lassen und sie war nicht dabei. Dann bin ich auf Win32_NetworkAdapter gekommen, dieser listet auch meine Netzwerkkarte und laut MSDN gibt es da auch eine Methode Enable() und Disable(). Der WMI Code generator listet die aber nicht auf, also habe ich den Code entsprechend selber angepasst.

Habe vorher gelistet und ID10 ist die entsprechende Netzwerkkarte.


using System;
using System.Management;
using System.Windows.Forms;

namespace WMISample
{
    public class CallWMIMethod
    {
        public static void Main()
        {
            try
            {
                ManagementObject classInstance = 
                    new ManagementObject("root\\CIMV2", 
                    "Win32_NetworkAdapter.DeviceID='10'",
                    null);

                // Obtain in-parameters for the method
                ManagementBaseObject inParams = 
                    classInstance.GetMethodParameters("Disable");

                // Add the input parameters.

                // Execute the method and obtain the return values.
                ManagementBaseObject outParams = 
                    classInstance.InvokeMethod("Disable", inParams, null);

                // List outParams
                Console.WriteLine("Out parameters:");
                Console.WriteLine("ReturnValue: " + outParams["ReturnValue"]);
            }
            catch(ManagementException err)
            {
                MessageBox.Show("An error occurred while trying to execute the WMI method: " + err.Message);
            }
        }
    }
}

Fehlermeldung: Diese WMI-Methode ist in keiner Klasse implementiert.

Mein FEHLER da steht ja WINDOWS VISTA ich hab nur XP, das hab ich wohl übersehen, nur steh ich jetzt wieder am Anfang.

M
marmey Themenstarter:in
47 Beiträge seit 2007
vor 16 Jahren

Ich habe eine Lösung gefunden.

Die Networkverbindung deaktiveren/aktivieren geht unter WinXP nur per WMI wenn man DHCP aktiviert hat. Da dies bei mir zum Glück der Fall ist, ist das Problem gelöst.

Link: MSDN

Falls jemand noch etwas findet, wie man dies ohne WMI lösen kann, so das es immer geht und nicht nur bei DHCP, wäre ich daran interessiert.

M
marmey Themenstarter:in
47 Beiträge seit 2007
vor 16 Jahren

So hab mir jetzt ein Programm für den speziellen Fall gebastelt. Vielleicht hat ja noch jemand nehn Einsatzbereich.