1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Exception from HRESULT: 0x800706BA

Discussão em 'Programação' iniciada por Byt3, 14 de Julho de 2009. (Respostas: 0; Visualizações: 1266)

  1. Byt3

    Byt3 Power Member

    Já tenho pedido algumas ajudas aqui no fórum, e tenho conseguido resolvê-las com a vossa ajuda. No entanto, vou fazer uma descrição mais profunda do projecto e pedir novamente uma ajuda. Passo a explicar:

    Tenho uma aplicação em C#, que reconhece através da LDAP, todos os computadores num domínio, até aqui sem problemas. Mas o objectivo da aplicação, é que identifique alguns dispositivos dos computadores nesse mesmo domínio, e isto eu estou a tentar fazer através de consultas WMI. Vou meter aqui um pedaço do meu código:

    ConnectionOptions co = new ConnectionOptions();
    ManagementScope ms = new ManagementScope("\\\\" + lBoxListarTudo.SelectedItem.ToString() + "\\root\\cimv2", co);

    ObjectQuery oq = new ObjectQuery("SELECT * FROM Win32_ComputerSystem");
    ManagementObjectSearcher query1 = new ManagementObjectSearcher(ms, oq);
    ManagementObjectCollection queryCollection1 = query1.Get();

    foreach (ManagementObject mo in queryCollection1)
    {
    NomeMaquina.Text = mo["Name"].ToString();
    Marca.Text = mo["Manufacturer"].ToString();
    Modelo.Text = mo["Model"].ToString();
    }


    Onde lBoxListarTudo.SelectedItem.ToString() é o IP da máquina que eu selecionar. Naturalmente que na máquina local funciona correctamente. Mas quando tento aceder a outras máquinas, dá-me este erro:

    The RPC server is unavailable. (Exception from HRESULT: 0x800706BA)


    Já agora, este é o código que eu faço para reconhecer todos os computadores no domínio:

    DirectoryEntry defaultServer = new DirectoryEntry("LDAP://RootDSE");
    string strLdapServer = (string)defaultServer.Properties["defaultNamingContext"].Value;
    DirectoryEntry mySearchRoot = new DirectoryEntry("LDAP://" + strLdapServer);

    DirectorySearcher myDirectorySearcher = new DirectorySearcher(mySearchRoot);
    myDirectorySearcher.Filter = ("(objectClass:=computer)");

    foreach (SearchResult resEnt in myDirectorySearcher.FindAll())
    {
    // Get the 'DirectoryEntry' that corresponds to 'mySearchResult'.
    DirectoryEntry myDirectoryEntry = resEnt.GetDirectoryEntry();
    string strComputer = myDirectoryEntry.Name.ToString();

    lBoxListarCriterio.Items.Add(
    strComputer .ToString());
    }

    Já tentei libertar portas TCP e UDP na firewall, mas no entanto não deu resultado. Tenho permissões de administrador da rede, e não consigo fazer isto.
    Agradeço ajuda, este é um projecto final de curso de informática e eu sou estagiário numa empresa.

    Cumps
     

Partilhar esta Página