Announcement

Collapse
No announcement yet.

Netzwerkfreigaben anzeigen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Netzwerkfreigaben anzeigen

    Hallo,

    ich wollte auf Grund einer Vorlage (http://dotnet-snippets.de/dns/c-frei...en-SID642.aspx) ein kleines Programm zusammenbasteln. Ich nutze zur Entwicklung Microsoft Visual C# 2008 Express Edition. Problem: Typen wie ManagementScope oder Object query sind unbekannt.
    Ich bin ziemlicher Anfänger was C# und seine Klassen etc. angeht. Deswegen kanns auch ganz gut sein, dass ich hier einfach Mist gebaut hab. Hier der bisherige Code:

    Code:
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using System.Management;
    
    
    namespace WindowsFormsApplication1
    {
        public partial class frmMain : Form
        {
            public frmMain()
            {
                InitializeComponent();
            }
    
            class ShareLister
            {
                public List<ManagementObject> ListShares(string computername, string username, string password)
                {
                    List<ManagementObject> Shares = new List<ManagementObject>();
                    if (computername != string.Empty)
                    {
                        ManagementScope managementScope1 = new ManagementScope((@"\\" + computername + @"\root\cimv2"));
                        managementScope1.Options.Username = username;
                        managementScope1.Options.Password = password;
                        managementScope1.Options.EnablePrivileges = true;
                        ObjectQuery objectQuery1 = new ObjectQuery("SELECT * FROM Win32_Share");
                        ManagementObjectSearcher managementObjectSearcher1 = new ManagementObjectSearcher(managementScope1, objectQuery1);
                        using (ManagementObjectCollection.ManagementObjectEnumerator managementObjectEnumerator1 =
                                managementObjectSearcher1.Get().GetEnumerator())
                        {
                            while (managementObjectEnumerator1.MoveNext())
                            {
                                ManagementObject managementObject1 = ((ManagementObject)managementObjectEnumerator1.Current);
                                Shares.Add(managementObject1);
                            }
                        }
                    }
                    return Shares;
                }
            }
    
            private void bsfAnzeigen_Click(object sender, EventArgs e)
            {
                string compName = tfComputername.Text;
                string userName = tfUsername.Text;
                string userPW = tfPassword.Text;
    
                if(!(compName.Length == 0 || userName.Length == 0 || userPW.Length == 0)){
                    ShareLister lister = new ShareLister();
                    List<ManagementObject> shares = lister.ListShares(compName, compName + userName, userPW);
    
                    foreach (ManagementObject share in shares)
                    {
                        lstFreigaben.Items.Add(share["name"].ToString());
                    }
                }
            }
        }
    }

  • #2
    Die fehlt vermutlich die Referenzen auf die Assemblies in denen diese Klassen stecken. ManagementScope kommt (wenn du mal in der Hilfe nachsiehst, dort steht immer dabei aus welcher Assembly eine Klasse stammt) zum Beispiel aus der System.Management.dll Assembly. Also im Solution Explorer das Contextmenü deines Projektes öffnen und 'Add Reference...' aufrufen. Dort kannst du dann die benötigte Assembly auswählen.

    Comment


    • #3
      Originally posted by Svenkan View Post
      Problem: Typen wie ManagementScope oder Object query sind unbekannt.
      Grundsätzlich solltest du Fehlermeldungen komplett zitieren. Ich vermute mal, sie lautet sinngemäß so:
      Der Typ- oder Namespacename "ManagementScope" konnte nicht gefunden werden. (Fehlt eine using-Direktive oder ein Assemblyverweis?)
      Die Lösung steht in der Klammer: Laut SDK-Doku gehört ManagementScope zum Namespace System.Management und ist in der System.Management.dll enthalten. Der Namespace wird in der using-Anweisung genannt. Hast du unter "Referenzen > Hinzufügen" die Assembly System.Management.dll registriert?

      Gruß Jürgen

      PS. Ich befürchte, dass du zu hoch einsteigst. Beschäftigst du dich mit einer Einführung in .NET und C#, z.B. mit dem openbook visual_csharp?

      Comment

      Working...
      X