Vad jag har förstått så är det lite tunsått :) med egenskaper för filer i .NET. Jag antar att det inte går eftersom det returneras en array av strängar och inte en array av objekt.
Min gissning blir att du får använda dig av gammla hederliga Win32 API för att få ut den informationen, tyvärr vet jag inte hur, men det kan man säkert söka upp på nätet :-)
Det såg ju kanon ut, men det var ju för VB.net.
Hur översätter man detta till C#?
Imports System
Imports System.Management
' Disktypes - NoRoot = 1; Removable = 2; LocalDisk = 3; Network = 4; CD = 5; RAMDrive = 6;
Public Class Wmis
Public Shared Sub Main()
Dim disks As New ManagementClass("Win32_LogicalDisk")
Dim moc As ManagementObjectCollection = disks.GetInstances()
Dim mo As ManagementObject
For Each mo In moc
Console.WriteLine("Disk type : {0}", mo("DriveType").ToString())
Next mo
disks.Dispose()
End Sub 'Main
End Class
Trixade ihop ett litet utökat konverterat program åt dig :)
För att komma åt System.Management måste du lägga till en referens till just System.Management i ditt projekt.
i visual studio.net gör fu det genom att högerklicka på references i solution explorer och välja add reference.
using System;
using System.Management;
namespace ConsoleApplication1
{
class Class1
{
[STAThread]
static void Main(string[] args)
{
ManagementClass disks = new ManagementClass("Win32_LogicalDisk");
ManagementObjectCollection moc = disks.GetInstances();
foreach(ManagementObject mo in moc)
{
int drivetype = Int16.Parse(mo.GetPropertyValue("DriveType").ToString());
Console.WriteLine("-----------------------------------");
Console.WriteLine("Name : " + mo.GetPropertyValue("Name").ToString());
Console.WriteLine("Disk type : {0}", GetDT(drivetype));
if(mo.GetPropertyValue("FreeSpace") != null)
Console.WriteLine("FreeSpace: " + mo.GetPropertyValue("FreeSpace").ToString());
if(mo.GetPropertyValue("Size") != null)
Console.WriteLine("Size: " + mo.GetPropertyValue("Size").ToString());
Console.WriteLine("-----------------------------------");
Console.WriteLine("");
}
disks.Dispose();
Console.ReadLine();
}
static string GetDT(int type)
{
switch(type)
{
case 1:
return "NoRoot";
case 2:
return "Removable";
case 3:
return "LocalDisk";
case 4:
return "Network";
case 5:
return "CD";
case 6:
return "RamDrive";
default:
return "Mr boombastic har ingen aning....";
}
}
}
}