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