|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Announcements
Chapters
Services
Feature Zones
|
IntroductionThis article is about a collection class of all the computers in your network including domain, domain controllers, printer servers, SQL Servers, time servers, terminal servers etc. BackgroundI was planning to write a LAN Chat Messenger application using remoting. In that application, I needed to know all the workstations in my domain. So, I looked at CodeProject and found a very good control titled, Network computer picker control written by Marc Merritt. Thanks to Marc Merritt for posting such a good control. When I read his article, I felt that a collection class would be more useful then a computer picker control. So, I used his code and made this collection class. I found it's great to use in my LAN Chat Messenger application. How to use the network computers classThere are four classes in the library.
Test ApplicationIt is very easy to use this collection class. Here is an example of how to use the code. I hope you would enjoy this class. The private void LoadComputerList()
{
Mutex loadMutex=new Mutex(false,"NetworkComputer");
loadMutex.WaitOne();
myDomains=new DomainCollection();
myDomains.Refresh();
for (int i=0;i<myDomains.Count;i++)
{
myDomains[i].DialinServers.Refresh();
myDomains[i].DomainControllers.Refresh();
myDomains[i].PrintServers.Refresh();
myDomains[i].TerminalServers.Refresh();
myDomains[i].TimeServers.Refresh();
myDomains[i].Workstations.Refresh();
myDomains[i].SQLServers.Refresh();
}
loadMutex.ReleaseMutex();
}
To load the list in a tree view, I use a timer where I wait for the mutex. private void timer1_Tick(object sender, System.EventArgs e)
{
Mutex loadMutex=new Mutex(false,"NetworkComputer");
if(loadMutex.WaitOne(0,false)==true)
{
timer1.Enabled=false;
tvComputerList.Nodes.Clear();
for (int i=0;i<myDomains.Count;i++)
{
System.Windows.Forms.TreeNode domainNode=
new TreeNode(myDomains[i].Name);
tvComputerList.Nodes.Add(domainNode);
if (myDomains[i].DialinServers.Count>0)
{
System.Windows.Forms.TreeNode serversNode=
new TreeNode("Dial In Servers");
domainNode.Nodes.Add(serversNode);
for (int j=0;j<myDomains[i].DialinServers.Count;j++)
{
System.Windows.Forms.TreeNode computerNode=
new TreeNode(myDomains[i].DialinServers[j].Name);
serversNode.Nodes.Add(computerNode);
}
}
if (myDomains[i].DomainControllers.Count>0)
{
System.Windows.Forms.TreeNode serversNode=
new TreeNode("Domain Controllers");
domainNode.Nodes.Add(serversNode);
for (int j=0;j<myDomains[i].DomainControllers.Count;j++)
{
System.Windows.Forms.TreeNode computerNode=
new TreeNode(myDomains[i].DomainControllers[j].Name);
serversNode.Nodes.Add(computerNode);
}
}
if (myDomains[i].PrintServers.Count>0)
{
System.Windows.Forms.TreeNode serversNode=
new TreeNode("Print Servers");
domainNode.Nodes.Add(serversNode);
for (int j=0;j<myDomains[i].PrintServers.Count;j++)
{
System.Windows.Forms.TreeNode computerNode=
new TreeNode(myDomains[i].PrintServers[j].Name);
serversNode.Nodes.Add(computerNode);
}
}
if (myDomains[i].TerminalServers.Count>0)
{
System.Windows.Forms.TreeNode serversNode=
new TreeNode("Terminal Servers");
domainNode.Nodes.Add(serversNode);
for (int j=0;j<myDomains[i].TerminalServers.Count;j++)
{
System.Windows.Forms.TreeNode computerNode=
new TreeNode(myDomains[i].TerminalServers[j].Name);
serversNode.Nodes.Add(computerNode);
}
}
if (myDomains[i].TimeServers.Count>0)
{
System.Windows.Forms.TreeNode serversNode=
new TreeNode("Time Servers");
domainNode.Nodes.Add(serversNode);
for (int j=0;j<myDomains[i].TimeServers.Count;j++)
{
System.Windows.Forms.TreeNode computerNode=
new TreeNode(myDomains[i].TimeServers[j].Name);
serversNode.Nodes.Add(computerNode);
}
}
if (myDomains[i].Workstations.Count>0)
{
System.Windows.Forms.TreeNode serversNode=
new TreeNode("Workstations");
domainNode.Nodes.Add(serversNode);
for (int j=0;j<myDomains[i].Workstations.Count;j++)
{
System.Windows.Forms.TreeNode computerNode=
new TreeNode(myDomains[i].Workstations[j].Name);
serversNode.Nodes.Add(computerNode);
}
}
if (myDomains[i].SQLServers.Count>0)
{
System.Windows.Forms.TreeNode serversNode=
new TreeNode("SQL Servers");
domainNode.Nodes.Add(serversNode);
for (int j=0;j<myDomains[i].SQLServers.Count;j++)
{
System.Windows.Forms.TreeNode computerNode=
new TreeNode(myDomains[i].SQLServers[j].Name);
serversNode.Nodes.Add(computerNode);
}
}
}
loadMutex.ReleaseMutex();
}
}
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||