[DllImport("shell32.dll")]
static extern bool SHGetSpecialFolderPath(IntPtr hwndOwner,
[Out] StringBuilder lpszPath, int nFolder, bool fCreate);
<DllImport("shell32.dll")> Shared Function SHGetSpecialFolderPath(ByVal hwndOwner As IntPtr,
<Out()> ByVal lpszPath As StringBuilder, ByVal nFolder As Integer, ByVal fCreate As Boolean) As Boolean
End Function
None.
None.
Please add some!
const int CSIDL_PROGRAMS = 2; // \Windows\Start Menu\Programs
StringBuilder path = new StringBuilder(255);
SHGetSpecialFolderPath(IntPtr.Zero, path, CSIDL_PROGRAMS, false);
// path.ToString() should now hold the path
Environment.GetFolderPath(Environment.SpecialFolder.xxx) probably calls this internally - it does the same thing.
However not all of the enums are available (e.g. CSIDL_COMMON_DOCUMENTS missing on .NET 1.1) therefore this is needed sometimes.