PathYetAnotherMakeUniqueName (shell32)
Last changed: -168.100.196.53

.
Summary
Creates a unique filename based on an existing filename

C# Signature:

[DllImport("shell32.dll", EntryPoint="PathYetAnotherMakeUniqueName", CharSet=CharSet.Unicode)]
internal static extern bool PathYetAnotherMakeUniqueName (
     StringBuilder pszUniqueName,
     string pszPath,
     string pszShort,
     string pszFileSpec);

For older systems such as Windows 2000 that do not have the entry point
PathYetAnotherMakeUniqueName name defined, the function is accessible
through its' ordinal value:

[DllImport("shell32.dll", EntryPoint="#75", CharSet=CharSet.Unicode)]
internal static extern bool PathYetAnotherMakeUniqueName (
     StringBuilder pszUniqueName,
     string pszPath,
     string pszShort,
     string pszFileSpec);

VB Signature:

<DllImport("shell32.dll", EntryPoint:="PathYetAnotherMakeUniqueName", CharSet:=CharSet.Unicode)> _
Friend Shared Function PathYetAnotherMakeUniqueName( _
    ByVal pszUniqueName As StringBuilder, _
    ByVal pszPath As String, _
    ByVal pszShort As String, _
    ByVal pszFileSpec As String) As Boolean
End Function

Sample Code:

const int MAX_PATH = 260;
StringBuilder buffer = new StringBuilder(MAX_PATH);
string folderSpec = @"d:\longfilename.log";
string fileSpec = "longfilename.log";

bool result = NativeMethods.PathYetAnotherMakeUniqueName(buffer, folderSpec, null, fileSpec);

Debug.WriteLine(string.Format("File: {0}", buffer.ToString()));

Alternative Managed API:

Do you know one? Please contribute it!

Documentation