Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Wyświetlanie informacji o sprzęcie

Ostatnio zmodyfikowano 2011-12-21 19:00
Autor Wiadomość
MJJay
Temat założony przez niniejszego użytkownika
Wyświetlanie informacji o sprzęcie
» 2011-12-21 18:18:21
Witam jakiej mogę użyć biblioteki, żeby uzyskać w konsoli informacje o sprzęcie użytkownika oraz systemie a następnie zapisać je do pliku tekstowego?
P-45989
DejaVu
» 2011-12-21 18:36:53
Jaki system operacyjny?

/edit:
W każdym razie Windows: http://msdn.microsoft.com/en-us/library/windows/desktop/aa390423(v=vs.85).aspx
P-45990
MJJay
Temat założony przez niniejszego użytkownika
» 2011-12-21 18:40:33
Na windows

#include <comdef.h>
#include <Wbemidl.h>
tu błąd kompilacji, dlaczego?
P-45991
DejaVu
» 2011-12-21 18:43:01
Jasnowidzem nie jestem :)

PS. Jeżeli nie jesteś dobry z programowania to na nic Ci się nie przyda ten przykład bo nad tym całym WMI trzeba trochę posiedzieć żeby wyczaić jak wyciągać z niego informacje.

/edit:
To też się przyda przy WMI: http://msdn.microsoft.com/en-us/library/windows/desktop/aa389273(v=VS.85).aspx
P-45992
MJJay
Temat założony przez niniejszego użytkownika
» 2011-12-21 18:44:23
To masz kod:

C/C++
#define _WIN32_DCOM
#include <iostream>
using namespace std;
#include <comdef.h>
#include <Wbemidl.h>

# pragma comment(lib, "wbemuuid.lib")

int main( int argc, char ** argv )
{
    HRESULT hres;
   
    // Step 1: --------------------------------------------------
    // Initialize COM. ------------------------------------------
   
    hres = CoInitializeEx( 0, COINIT_MULTITHREADED );
    if( FAILED( hres ) )
    {
        cout << "Failed to initialize COM library. Error code = 0x"
        << hex << hres << endl;
        return 1; // Program has failed.
    }
   
    // Step 2: --------------------------------------------------
    // Set general COM security levels --------------------------
    // Note: If you are using Windows 2000, you need to specify -
    // the default authentication credentials for a user by using
    // a SOLE_AUTHENTICATION_LIST structure in the pAuthList ----
    // parameter of CoInitializeSecurity ------------------------
   
    hres = CoInitializeSecurity(
    NULL,
    - 1, // COM authentication
    NULL, // Authentication services
    NULL, // Reserved
    RPC_C_AUTHN_LEVEL_DEFAULT, // Default authentication
    RPC_C_IMP_LEVEL_IMPERSONATE, // Default Impersonation
    NULL, // Authentication info
    EOAC_NONE, // Additional capabilities
    NULL // Reserved
    );
   
   
    if( FAILED( hres ) )
    {
        cout << "Failed to initialize security. Error code = 0x"
        << hex << hres << endl;
        CoUninitialize();
        return 1; // Program has failed.
    }
   
    // Step 3: ---------------------------------------------------
    // Obtain the initial locator to WMI -------------------------
   
    IWbemLocator * pLoc = NULL;
   
    hres = CoCreateInstance(
    CLSID_WbemLocator,
    0,
    CLSCTX_INPROC_SERVER,
    IID_IWbemLocator,( LPVOID * ) & pLoc );
   
    if( FAILED( hres ) )
    {
        cout << "Failed to create IWbemLocator object."
        << " Err code = 0x"
        << hex << hres << endl;
        CoUninitialize();
        return 1; // Program has failed.
    }
   
    // Step 4: -----------------------------------------------------
    // Connect to WMI through the IWbemLocator::ConnectServer method
   
    IWbemServices * pSvc = NULL;
   
    // Connect to the root\cimv2 namespace with
    // the current user and obtain pointer pSvc
    // to make IWbemServices calls.
    hres = pLoc->ConnectServer(
    _bstr_t( L"ROOT\\CIMV2" ), // Object path of WMI namespace
    NULL, // User name. NULL = current user
    NULL, // User password. NULL = current
    0, // Locale. NULL indicates current
    NULL, // Security flags.
    0, // Authority (e.g. Kerberos)
    0, // Context object
    & pSvc // pointer to IWbemServices proxy
    );
   
    if( FAILED( hres ) )
    {
        cout << "Could not connect. Error code = 0x"
        << hex << hres << endl;
        pLoc->Release();
        CoUninitialize();
        return 1; // Program has failed.
    }
   
    cout << "Connected to ROOT\\CIMV2 WMI namespace" << endl;
   
   
    // Step 5: --------------------------------------------------
    // Set security levels on the proxy -------------------------
   
    hres = CoSetProxyBlanket(
    pSvc, // Indicates the proxy to set
    RPC_C_AUTHN_WINNT, // RPC_C_AUTHN_xxx
    RPC_C_AUTHZ_NONE, // RPC_C_AUTHZ_xxx
    NULL, // Server principal name
    RPC_C_AUTHN_LEVEL_CALL, // RPC_C_AUTHN_LEVEL_xxx
    RPC_C_IMP_LEVEL_IMPERSONATE, // RPC_C_IMP_LEVEL_xxx
    NULL, // client identity
    EOAC_NONE // proxy capabilities
    );
   
    if( FAILED( hres ) )
    {
        cout << "Could not set proxy blanket. Error code = 0x"
        << hex << hres << endl;
        pSvc->Release();
        pLoc->Release();
        CoUninitialize();
        return 1; // Program has failed.
    }
   
    // Step 6: --------------------------------------------------
    // Use the IWbemServices pointer to make requests of WMI ----
   
    // For example, get the name of the operating system
    IEnumWbemClassObject * pEnumerator = NULL;
    hres = pSvc->ExecQuery(
    bstr_t( "WQL" ),
    bstr_t( "SELECT * FROM Win32_OperatingSystem" ),
    WBEM_FLAG_FORWARD_ONLY | WBEM_FLAG_RETURN_IMMEDIATELY,
    NULL,
    & pEnumerator );
   
    if( FAILED( hres ) )
    {
        cout << "Query for operating system name failed."
        << " Error code = 0x"
        << hex << hres << endl;
        pSvc->Release();
        pLoc->Release();
        CoUninitialize();
        return 1; // Program has failed.
    }
   
    // Step 7: -------------------------------------------------
    // Get the data from the query in step 6 -------------------
   
    IWbemClassObject * pclsObj;
    ULONG uReturn = 0;
   
    while( pEnumerator )
    {
        HRESULT hr = pEnumerator->Next( WBEM_INFINITE, 1,
        & pclsObj, & uReturn );
       
        if( 0 == uReturn )
        {
            break;
        }
       
        VARIANT vtProp;
       
        // Get the value of the Name property
        hr = pclsObj->Get( L"Name", 0, & vtProp, 0, 0 );
        wcout << " OS Name : " << vtProp.bstrVal << endl;
        VariantClear( & vtProp );
       
        pclsObj->Release();
    }
   
    // Cleanup
    // ========
   
    pSvc->Release();
    pLoc->Release();
    pEnumerator->Release();
    pclsObj->Release();
    CoUninitialize();
   
    return 0; // Program successfully completed.
   
}
Hehe :)
Jak to zastąpić, żeby .h nie było bo to przez to nie działa.
P-45993
DejaVu
» 2011-12-21 18:46:00
Po co mi kod? Przecież sam Ci go dałem...
P-45995
pekfos
» 2011-12-21 18:46:24
tu błąd kompilacji, dlaczego?
Jaki? nie utrudniaj.
P-45996
MJJay
Temat założony przez niniejszego użytkownika
» 2011-12-21 18:46:51
Taki żarcik, wybacz:)
Nie no chodzi o to, że kolega mnie poprosił o taki programik tylko, że ja nie mam pojęcia jak się zabrać do tego...

//pekfos
taki, że nie potrafi odczytać tych bibliotek.
.h tak samo jakby iostream.h napisał...też nie odczyta. Code::Blocks
P-45997
« 1 » 2
  Strona 1 z 2 Następna strona