private string GetPath(ref TreeNode treenode)
        {
            TreeNode nextnode = treenode;
            //Node wird in nextnode geschrieben
            string text = "";

            //Falls es ein Drive ist
            if (nextnode.Level == 1) //0 darf nicht gehen
            {
                text = @"\\" + treenode.Text;
                return(text);
            }
            else
            {
                text = treenode.Text + @"\";
            }
            while (nextnode.Level >= 1)
            {
                nextnode = nextnode.Parent;
                if (nextnode.Level == 1)
                {
                    text = @"\\" + LocalNetworkFunctions.GetIPAdressFromMachineName(nextnode.Text) + @"\" + text;
                    break;
                }
                else
                {
                    text = nextnode.Text + @"\" + text;
                }
            }
            return(text);
        }
        private void ShowSharedFolders()
        {
            for (int i = 0; i < tvnfs.Nodes[0].Nodes.Count; i++)
            {
                List <string> networkfolders = LocalNetworkFunctions.GetListOfSharedFolders(LocalNetworkFunctions.GetIPAdressFromMachineName(tvnfs.Nodes[0].Nodes[i].Text));
                foreach (string entry in networkfolders)
                {
                    if (entry.Contains("ERROR") == false)
                    {
                        try
                        {
                            TreeNode n = new TreeNode(entry);
                            n.ImageIndex         = 2;
                            n.SelectedImageIndex = 2;
                            tvnfs.Nodes[0].Nodes[i].Nodes.Add(n);
                        }
                        catch { }
                    }
                    else
                    {
                        System.Diagnostics.Debug.Print("Fehler beim Zugriff auf Netzwerk-Ordner");
                        System.Diagnostics.Debug.Print("IP: " + LocalNetworkFunctions.GetIPAdressFromMachineName(tvnfs.Nodes[0].Nodes[i].Text));
                        System.Diagnostics.Debug.Print("PC-Name: " + tvnfs.Nodes[0].Nodes[i].Text);
                        System.Diagnostics.Debug.Print("Error-Code: " + entry.Substring(entry.IndexOf("=") + 1));
                        //Anhand der Message den Fehler anzeigen
                        if (entry.Substring(entry.IndexOf("=") + 1) == "5")
                        {
                            System.Diagnostics.Debug.Print("Fehler: Access Denied");
                        }
                        else if (entry.Substring(entry.IndexOf("=") + 1) == "53")
                        {
                            System.Diagnostics.Debug.Print("Fehler: Bad Network Path");
                        }
                    }
                }

                //Der nächste Schritt ist zu scannen, welche Freigaben noch Unterordner hat, auf die zugegriffen werden kann.
                //wenn dies der Fall ist, soll ein Temp-Node angelegt werden
                if (tvnfs.Nodes[0].Nodes[i].Nodes.Count > 0)
                {
                    for (int j = 0; j < tvnfs.Nodes[0].Nodes[i].Nodes.Count; j++)
                    {
                        //Der Netzwerkpfad
                        string p = @"\\" + LocalNetworkFunctions.GetIPAdressFromMachineName(tvnfs.Nodes[0].Nodes[i].Text) + @"\" + tvnfs.Nodes[0].Nodes[i].Nodes[j].Text;
                        if (DirectoryFunctions.HasSubDirectories(p))
                        {
                            tvnfs.Nodes[0].Nodes[i].Nodes[j].Nodes.Add(TREENODE_DIRSUB);
                        }
                    }
                }
            }
        }
        private void Pingcl_PingListCompleted(List <string> iplist)
        {
            System.Diagnostics.Debug.Print("IP-Liste erhalten");
            pclist = iplist; //Für die Shared Folders vom Vorteil
            foreach (string ip in iplist)
            {
                try
                {
                    TreeNode n = new TreeNode(LocalNetworkFunctions.GetHostName(ip).ToUpper());
                    n.ImageIndex         = 1;
                    n.SelectedImageIndex = 1;
                    tvnfs.Invoke(new NetworkTreeViewAddElement(TreeViewAddPCElement), n);
                }
                catch { }
            }
            tvnfs.Invoke(new NetworkTreeViewClear(TreeViewClear));

            //Im Anschluss soll gleich die nächste Methode aufgerufen
            //werden. Diese soll die Netzwerkordner angeben für
            //jede einzelnen PC
            Invoke(new NetworkTreeViewClear(ShowSharedFolders)); //Invoken, damit es im Main-Thread läuft
        }