Search
Module:
Directory

   Desktop Functions:

   Smart Device Functions:


Show Recent Changes
Subscribe (RSS)
Misc. Pages
Comments
FAQ
Helpful Tools
Playground
Suggested Reading
Website TODO List
Download Visual Studio Add-In

SetVolumeLabel (kernel32)
 
.
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:

This API is unnecessary. Class System.IO.DriveInfo can both get and set the given drive label. See http://msdn.microsoft.com/en-us/library/system.io.driveinfo.aspx for more info.

^^^^^^^^ Unfortunately the DriveInfo Class does NOT support Network drives.

^^^^^^^^ Unfortunately the DriveInfo Class only handles volume with drive letter.

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

Tips & Tricks:

Please add some!

        [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.ComponentModel
Imports System.Runtime.InteropServices

C# Sample Code:

using System;
using 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
namespace PInvoke.Test
{

    class NameChanger
    {
        [DllImport("kernel32.dll")]
        static extern bool SetVolumeLabel(string lpRootPathName, string lpVolumeName);

    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
        [STAThread]
        public static void Main()
        {
            if(SetVolumeLabel("C:\\","PInvokeC Drive"))
                Console.WriteLine("Name Changed");
            else
                Console.WriteLine("Unable to change");
        }
    }
}

Alternative Managed API:

Dim Drive As New System.IO.DriveInfo("C:\")
MessageBox.Show(Drive.VolumeLabel & " [" & Drive.Name & "]")
Drive.VolumeLabel = "Test volume label"

VB.NET Sample Code:

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

See http://msdn.microsoft.com/en-us/library/system.io.driveinfo.aspx for more info.

    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

Documentation

Alternative Managed API:

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.

Documentation

Please edit this page!

Do you have...

  • helpful tips or sample code to share for using this API in managed code?
  • corrections to the existing content?
  • variations of the signature you want to share?
  • additional languages you want to include?

Select "Edit This Page" on the right hand toolbar and edit it! Or add new pages containing supporting types needed for this API (structures, delegates, and more).

 
Access PInvoke.net directly from VS:
Terms of Use
Edit This Page
Find References
Show Printable Version
Revisions