[DllImport("kernel32.dll", SetLastError=true, CharSet=CharSet.Auto)]
static extern bool SetVolumeLabel(string lpRootPathName, string lpVolumeName);
<DllImport("kernel32.dll", SetLastError:=True, CharSet:=CharSet.Auto)> _
Private Shared Function SetVolumeLabel(ByVal lpRootPathName As String, ByVal lpVolumeName As String) As Boolean
End Function
None.
None.
Please add some!
using System;
using System.Runtime.InteropServices;
namespace PInvoke.Test
{
class NameChanger
{
[DllImport("kernel32.dll")]
static extern bool SetVolumeLabel(string lpRootPathName, string lpVolumeName);
[STAThread]
public static void Main()
{
if(SetVolumeLabel("C:\\","PInvokeC Drive"))
Console.WriteLine("Name Changed");
else
Console.WriteLine("Unable to change");
}
}
}
Imports System.ComponentModel
Imports System.Runtime.InteropServices
''' <summary>
''' Managed wrapper for changing the drive label
''' </summary>
Public Module VolumeLabel
<DllImport("kernel32.dll", SetLastError:=True, CharSet:=CharSet.Auto)> _
Private Function SetVolumeLabel(ByVal lpRootPathName As String, ByVal lpVolumeName As String) As Boolean
End Function
Public Property DriveLabel(ByVal DrivePath As String) As String
Get
Return Dir(DrivePath, FileAttribute.Volume)
End Get
Set(ByVal value As String)
If Not SetVolumeLabel(DrivePath, value) Then Throw New Win32Exception(Marshal.GetLastWin32Error())
End Set
End Property
End Module
Dim Drive As New System.IO.DriveInfo("C:\")
MessageBox.Show(Drive.VolumeLabel & " [" & Drive.Name & "]")
Drive.VolumeLabel = "Test volume label"
See http://msdn.microsoft.com/en-us/library/system.io.driveinfo.aspx for more info.