@msdn=http://search.microsoft.com/search/results.aspx?qu=$$$ @pinvoke=http://pinvoke.net/$$$.htm Summary: Takes a fully qualified path, and replaces folder names with their associated environment strings. !!!!C# Signature: [DllImport("shlwapi.dll", CharSet=CharSet.Auto)] static extern bool PathUnExpandEnvStrings(string pszPath, [Out] StringBuilder pszBuf, int cchBuf); !!!!VB.NET Signature: <DllImport("shlwapi.dll", EntryPoint:="PathUnExpandEnvStringsW", SetLastError:=true, CharSet:=CharSet.Unicode)> _ Public Function PathUnExpandEnvStrings(<MarshalAs(UnmanagedType.LPTStr)>pszPath As String, _ <MarshalAs(UnmanagedType.LPTStr)>lpszPath As System.Text.StringBuilder, _ dx As Integer) As <MarshalAs(UnmanagedType.Bool)>Boolean End Function !!!!VB.NET Signature: Public Declare Function PathUnExpandEnvStrings Lib "shlwapi" Alias "PathUnExpandEnvStringsA" _ (ByVal lpSrc As String, _ ByVal lpDst As String, _ ByVal nSize As Long) As Long !!!!Notes: This is basically the inverse of ExpandEnvironmentStrings or Environment.ExpandEnvironmentVariables@msdn. Only Microsoft knows why this inverse function didn't make it's way into the framework. !!!!Tips & Tricks: Please add some! !!!!Sample Code C#: StringBuilder sb = new StringBuilder(MAX_PATH-1); bool b = PathUnExpandEnvStrings(@"C:\Program Files\Test", sb, sb.Capacity); // Result: b == true && sb.ToString() == @"%ProgramFiles%\Test" !!!!Sample Code VB.NET: Dim sb As New System.Text.StringBuilder(1024) Dim blnOK As Boolean = PathUnExpandEnvStrings("C:\Program Files\Test", sb, sb.Capacity) Dim strUnExpandEnvStrings As String If blnOK = True Then strUnExpandEnvStrings = sb.ToString ' Should be %ProgramFiles%\Test on English OS !!!!Alternative Managed API: Do you know one? Please contribute it! Documentation: PathUnExpandEnvStrings@msdn on MSDN
Edit shlwapi.pathunexp...
You do not have permission to change this page. If you feel this is in error, please send feedback with the contact link on the main page.