Hardware mit Hilfe von WMI auslesen



  • Hallo Leute,

    ich habe eine verwaltete Anwendung, die die Hardware-Daten ausliest. Beim ersten Start hat alles auch super geklappt, danach wurden auf dem Rechner Änderungen vorgenommen, welche, sind mir nicht bekannt. Jetzt stürzt das Programm ab, wenn die Verbindung zu WMI aufgebaut wird (Init Methode der System::Management::ManagementScope- Klasse). Bin schon sehr verzweifelt, bin dankbar für jeden Hinweis, Ratschlag.

    Mein Code:

    //Member meiner Klasse
    System::Management::ManagementScope ^m_connectScope;

    bool CManHW::InitConnect()
    {
    bool bRet = false;
    try
    {
    // System::Management::ConnectionOptions festelegen
    //CWTF::WriteLogFile("InitConnect Step_1");

    System::Management::ConnectionOptions ^options = gcnew ConnectionOptions();
    //CWTF::WriteLogFile("InitConnect Step_2");

    options->Impersonation = ImpersonationLevel::Impersonate;

    //CWTF::WriteLogFile("InitConnect Step_3");

    //options->Authentication = AuthenticationLevel::Default;
    options->Authentication = AuthenticationLevel::Unchanged;

    options->EnablePrivileges = true;

    //System::Management::ManagementScope erzeugen
    //CWTF::WriteLogFile("InitConnect Step_4");

    //CWTF::WriteLogFile("Environment::MachineName:");
    //CWTF::WriteLogFile((LPCSTR)StringConvA(Environment::MachineName));

    m_connectScope = gcnew ManagementScope();
    if (m_connectScope != nullptr)
    {
    m_connectScope->Path = gcnew ManagementPath("\\\" + Environment::MachineName + "\\root\\cimv2");

    m_connectScope->Options = options;

    //Verbinding aufbauen
    //CWTF::WriteLogFile("Connect-Begin");

    m_connectScope->Connect();

    //*******
    // hier bricht das Programm ab und Windows spuckt eine Fehlermeldung aus
    //*******

    if (m_connectScope->IsConnected == true)

    .....

    Zum Testen habe ich dasselbe noch in C# implenentiert und die Parameter geändert, immer dasselbe:

    Meldung

    Details:

    Informationen über das Aufrufen von JIT-Debuggen
    anstelle dieses Dialogfelds finden Sie am Ende dieser Meldung.

    ************** Ausnahmetext **************
    System.Runtime.InteropServices.COMException (0x8007054E): Der angeforderte Vorgang konnte nicht abgeschlossen werden (entweder wegen eines schweren Fehlers auf dem Speichermedium oder einer beschädigten Datenstruktur auf dem Datenträger). (Ausnahme von HRESULT: 0x8007054E)
    bei System.Management.ManagementScope.Initialize()

    Vielen Lieben Dank

    Maria





  • Vielen Dank theta, kann es jetzt nicht testen, melde mich, wenn es geklappt hat



  • Benötige wieder Hilfe!!!

    unter Vista Ultimate eine andere Fehlermeldung:

    Beschreibung:
    Stopped working

    Problemsignatur:
    Problemereignisname: CLR20r3
    Problemsignatur 01: test.exe
    Problemsignatur 02: 1.0.0.0
    Problemsignatur 03: 4d022f46
    Problemsignatur 04: System.Management
    Problemsignatur 05: 2.0.0.0
    Problemsignatur 06: 49cc5f67
    Problemsignatur 07: 111
    Problemsignatur 08: 123
    Problemsignatur 09: System.UnauthorizedAccess
    Betriebsystemversion: 6.0.6002.2.2.0.256.1
    Gebietsschema-ID: 1031

    die Verbindung zu WMI wird aufgebaut, bei der Abfrage stürzt das Programm dann ab.

    ---------------------------------------------------------------------------
    Lösung des Problems davor:

    Dienst "Windows-Verwaltungsinstrumentation" beenden.
    ->Start/Einstellungen/Systemsteuerung/Verwalung/Computerverwaltung/Dienste und Anwendungen/Dienste

    Ordner »Repository« im Pfad
    C:\ WINDOWS\ system32\ wbem\ Repository
    löschen oder umbenennen und neu booten.

    wurde das Problem beseitigt. Mehr war nicht nötig. ----------------------------------------------------------

    Vielen Dank für Eure Hilfe

    Maria



  • mir ist aufgefallen, dass dxdiag nicht alle Hardware-Daten ausliest,
    jemand vielleicht eine Idee woran es liegen könnte?


Anmelden zum Antworten