SetVolumeLabel (kernel32)
Last changed: -82.242.102.192

.
Summary
Sets the label of a file system volume.

C# Signature:

[DllImport("kernel32.dll", SetLastError=true, CharSet=CharSet.Auto)]
static extern bool SetVolumeLabel(string lpRootPathName, string lpVolumeName);

VB.NET Signature:

<DllImport("kernel32.dll", SetLastError:=True, CharSet:=CharSet.Auto)> _
Private Shared Function SetVolumeLabel(ByVal lpRootPathName As String, ByVal lpVolumeName As String) As Boolean
End Function

User-Defined Types:

None.

Notes:

None.

Tips & Tricks:

Please add some!

C# Sample Code:

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");
        }
    }
}

VB.NET Sample Code:

Imports System.Runtime.InteropServices
Imports System.ComponentModel

''' <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

Alternative Managed API:

Do you know one? Please contribute it!

Documentation