Вы пробовали:
Environment.GetFolderPath (System.Environment.SpecialFolder.UserProfile)
Редактировать: этот элемент emum присутствует только в Framework 4.0.В более ранних версиях Framework следующее должно давать тот же результат:
void Main()
{
var lpszPath = new StringBuilder(260);
const int UserProfile = 40;
SHGetFolderPath (IntPtr.Zero, UserProfile, IntPtr.Zero, 0, lpszPath);
string answer = lpszPath.ToString();
}
[DllImport("shfolder.dll", CharSet=CharSet.Auto)]
internal static extern int SHGetFolderPath(IntPtr hwndOwner, int nFolder, IntPtr hToken, int dwFlags, StringBuilder lpszPath);