Grundlagen: C# WinForms Desktop-Anwendung für Dot Net 4.Wie kann ich den "Anzeigenamen" für eine zugeordnete Netzwerkfreigabe lesen?
Ich zähle alle Laufwerke auf einem System mit System.IO.DriveInfo. Das funktioniert ganz gut und kann mir auch sagen, um welche Art von Laufwerk es sich handelt (Festnetz/Netzwerk/CD-ROM, etc). Es kann mir auch das VolumeLabel geben - das funktioniert wie gewünscht auf lokalen Laufwerken, aber für gemappte Netzwerklaufwerke gibt es das VolumeLabel des logischen Laufwerks, wie es auf dem Host-Computer definiert ist. In Windows Explorer können Sie jedem zugeordneten Laufwerk einen Anzeigenamen geben. Gibt es eine Möglichkeit, diesen Anzeigenamen programmgesteuert abzurufen? Dieser Name ist offensichtlich derjenige, der der Person vertraut ist, die den Computer benutzt.
Zum Beispiel können in der folgenden Abbildung sowohl "Critical" als auch "NonCritical" unterschiedliche Freigaben auf demselben logischen Datenträger mit dem Datenträgernamen "Data" auf dem Hostcomputer sein. Das Abfragen von WMI für VolumeName gibt "Data" zurück und die anderen Abfragen geben nur den Laufwerksbuchstaben oder sonst nichts zurück.
Ich habe am Info verfügbar über WMI sah (siehe: How to programmatically discover mapped network drives on system and their server names?), aber es scheint nicht, eine Eigenschaft zu sein, die diesen freundlichen Namen zurückgibt. Ich habe bei Beschriftung, Beschreibung, Systemname sah, und Volumename - wie folgt aus:
private void NetworkDrives()
{
try
{
var searcher = new ManagementObjectSearcher(
"root\\CIMV2",
"SELECT * FROM Win32_MappedLogicalDisk");
TreeNode share;
TreeNode property;
foreach (ManagementObject queryObj in searcher.Get())
{
share = new TreeNode("Name:" + queryObj["Name"]);
share.Nodes.Add("Caption: " + queryObj["Caption"]);
share.Nodes.Add("Description: " + queryObj["Description"]);
share.Nodes.Add("SystemName: " + queryObj["SystemName"]);
share.Nodes.Add("VolumeName: " + queryObj["VolumeName"]);
share.Nodes.Add("DeviceID: " + queryObj["DeviceID"]);
treeView1.Nodes.Add(share);
}
}
catch (ManagementException ex)
{
MessageBox.Show("An error occurred while querying for WMI data: " + ex.Message);
}
}
Vielen Dank im Voraus.
Ich bin nicht in der Lage ein zugeordnetes Laufwerk hinzuzufügen ich dies aus zu testen, aber haben Sie diese Diskussion gesehen [Thema] (http://social.msdn.microsoft.com/Forums/en-US/14846a85- e188-438e-9439-93ecccdb85f79/friendly-drive-names? forum = Vsexpressvb) (und der Vorschlag, 'Win32_DiskDrive' abzufragen)? –
@ledbutter: Ja, ich habe. Wie sie sagen, geben Caption und Beschreibung nicht die Informationen, die wir wollen. Ich habe noch keine WMI-Eigenschaft gefunden, die diese spezifische Information zurückgibt. Sehen Sie sich meinen Kommentar zu JPBlanc's Antwort an, wo dies in der Registrierung steht. – Nicolas