Exception from HRESULT: 0x800706BA

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
 
Back
Topo