Во-первых, вот видео разговор об изменениях, которые пройдет Python. Во-вторых, изменения бесполезны. В-третьих, я для одной желанной эволюции и полагаю, что это необходимо.
Я думаю, вам нужно использовать API SHGetSpecialFolderPath
, поскольку для "CommonDesktopDirectory" нет значения перечисления. Вы не можете явно использовать значение CSIDL_COMMON_DESKTOPDIRECTORY
и привести его к Environment.SpecialFolder
, потому что метод GetFolderPath
проверяет, что значение определено в перечислении. Вот код метода GetFolderPath
(из Reflector):
public static string GetFolderPath(SpecialFolder folder)
{
if (!Enum.IsDefined(typeof(SpecialFolder), folder))
{
throw new ArgumentException(string.Format(CultureInfo.CurrentCulture, GetResourceString("Arg_EnumIllegalVal"), new object[] { (int) folder }));
}
StringBuilder lpszPath = new StringBuilder(260);
Win32Native.SHGetFolderPath(IntPtr.Zero, (int) folder, IntPtr.Zero, 0, lpszPath);
string path = lpszPath.ToString();
new FileIOPermission(FileIOPermissionAccess.PathDiscovery, path).Demand();
return path;
}
Таким образом, вы можете легко скопировать и адаптировать ту часть, которая вам нужна ...
Для пояснения - Под обычным рабочим столом вы подразумеваете C: \ Documents and Settings \ All Users \ Desktop ?
Если да, то это ужасный взлом -
Dim c As String = Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData)
Dim comDesktop As String = c.Substring(0, c.LastIndexOf("\")) + "\Desktop"
Вы можете использовать Windows Script Host - WshShell.SpecialFolders
http://msdn.microsoft.com/en -us / library / 0ea7b5xe (VS.85) .aspx
Сначала добавьте ссылку на «Объектную модель хоста сценариев Windows». Вы найдете это на вкладке COM диалогового окна «Добавить ссылки».
using IWshRuntimeLibrary;
object commonUserDesktop = "AllUsersDesktop";
WshShell shell = new WshShellClass();
string commonPath = shell.SpecialFolders.Item(ref commonUserDesktop).ToString();
Другой способ (да, он тоже уродливый и будет работать, вероятно, только в Windows XP, а не в Vista) - прочитать значение из реестра
HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Explorer \ Shell Folders, Common Desktop