Для него нет специальной папки const, поэтому просто используйте системные переменные. Согласно этой статье Википедии Специальные папки, папка с сохраненными играми — это просто:
Сохраненные игры %USERPROFILE%\сохраненные игры Vista
Таким образом, код будет:
string sgPath = System.IO.Path.Combine(Environment.GetEnvironmentVariable("USERPROFILE"), "saved games"));
...
РЕДАКТИРОВАТЬ: Если, согласно комментариям, локализация является проблемой, и в соответствии с вашим вопросом вы по-прежнему хотите получить доступ к папке «Сохраненные игры» напрямую, а не через API, то может быть полезно следующее.
Используя отражатель RedGate, мы видим, что GetFolderPath реализован следующим образом:
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;
}
Так что, возможно, вы думаете, что все, что мне нужно, это создать свою собственную версию этого метода и передать ей идентификатор папки для сохраненных игр. Это не сработает. Эти идентификаторы папок до Vista на самом деле были CSIDL. Их список можно найти здесь. Однако обратите внимание на Примечание:.
При выпуске Vista Microsoft заменила CLSIDL на KNOWNFOLDERID. Список KNOWNFOLDERID можно найти здесь. И KNOWNFOLDERID сохраненных игр — FOLDERID_SavedGames.
Но вы не просто передаете новую константу старой, основанной на CLSIDL, функции SHGetFolderPath Win32. Согласно этой статье, известные папки и как и следовало ожидать, появилась новая функция под названием SHGetKnownFolderPath, которому вы передаете новую константу FOLDERID_SavedGames, которая вернет путь к папке «Сохраненные игры» в локализованной форме.
person
rism
schedule
09.04.2009