Добрый день!
Ситуация такая: при вызове функции Environment.GetFolderPath() для получения пути к папке Temp или Мои документы возвращается пустая строка. Происходит это, по всей вероятности, из-за того, что в пути присутствуют русские символы (папка Пользователи). Как обойти это?
Спасибо!
P.S. IDE - SharpDevelope
.NET - [решено] Пустая строка в функции Environment.GetFolderPath() C#
-
lxa85
Re: .NET - [решено] Пустая строка в функции Environment.GetFolderPath() C#
Цитата LilLoco:
Как обойти это?
Заключить в кавычки? (Подсунуть строку cd C:\User\ ... \Temp из командной строки)
Посмотреть, в какой кодировке идет работа?
К сожалению сейчас проверить не на чем.
Как обойти это?
.NET - [решено] Пустая строка в функции Environment.GetFolderPath() C#
Заключить в кавычки? (Подсунуть строку cd C:\User\ ... \Temp из командной строки)
Посмотреть, в какой кодировке идет работа?
К сожалению сейчас проверить не на чем.
-
LilLoco
Re: .NET - [решено] Пустая строка в функции Environment.GetFolderPath() C#
Цитата lxa85:
(Подсунуть строку cd C:\User\ ... \Temp из командной строки
Не совсем понятно, что имеется ввиду.
Цитата lxa85:
Заключить в кавычки?
Нечего заключать
Функция - без параметров, при вызове она возвращает пустую строку.
(Подсунуть строку cd C:\User\ ... \Temp из командной строки
.NET - [решено] Пустая строка в функции Environment.GetFolderPath() C#
Не совсем понятно, что имеется ввиду.
Цитата lxa85:
Заключить в кавычки?
.NET - [решено] Пустая строка в функции Environment.GetFolderPath() C#
Нечего заключать
Функция - без параметров, при вызове она возвращает пустую строку.-
User001
Re: .NET - [решено] Пустая строка в функции Environment.GetFolderPath() C#
Цитата LilLoco:
Происходит это, по всей вероятности, из-за того, что в пути присутствуют русские символы
Если вам не критично, можете переменные окружения поменять на англоязычные папки, чтобы проверить (
Происходит это, по всей вероятности, из-за того, что в пути присутствуют русские символы
.NET - [решено] Пустая строка в функции Environment.GetFolderPath() C#
Если вам не критично, можете переменные окружения поменять на англоязычные папки, чтобы проверить (
пример
).-
lxa85
Re: .NET - [решено] Пустая строка в функции Environment.GetFolderPath() C#
LilLoco, А может она и должна отдавать пустую строку?
Ей кстати не передан никакой параметр.
Получает путь к особой системной папке, указанной в заданном перечислении.
Цитата:
public static string GetFolderPath(
Environment..::..SpecialFolder folder
)
Возвращаемое значение
Тип: System.String
Путь к указанной особой системной папке, если эта папка физически существует на компьютере; в противном случае — пустая строка ("").
Папка физически не существует, если она не была создана операционной системой, была удалена или является виртуальным каталогом, таким как "Мой компьютер", которому не сопоставлен физический путь.
Пример:
Код:
В перечислении я не нашел папку Temp. Возможно ее надо где-то дополнительно указывать в системе. Пока не знаю.
Пусть отдельным сообщением.
Добавление своей папки как SpecialFolder.
Цитата:
Please don't do this.
These folder paths don't belong to your application, and changing them in this manner will not work for a domain user who has a folder redirection policy.
Ей кстати не передан никакой параметр.
Документация Environment::GetFolderPath - метод (Environment::SpecialFolder)
Получает путь к особой системной папке, указанной в заданном перечислении.
Цитата:
public static string GetFolderPath(
Environment..::..SpecialFolder folder
)
Возвращаемое значение
Тип: System.String
Путь к указанной особой системной папке, если эта папка физически существует на компьютере; в противном случае — пустая строка ("").
Папка физически не существует, если она не была создана операционной системой, была удалена или является виртуальным каталогом, таким как "Мой компьютер", которому не сопоставлен физический путь.
Пример:
Код:
Код: Выделить всё
// Sample for the Environment.GetFolderPath method
using System;
class Sample
{
public static void Main()
{
Console.WriteLine();
Console.WriteLine("GetFolderPath: {0}",
Environment.GetFolderPath(Environment.SpecialFolder.System));
}
}
/*
This example produces the following results:
GetFolderPath: C:\WINNT\System32
*/Перечисление
В перечислении я не нашел папку Temp. Возможно ее надо где-то дополнительно указывать в системе. Пока не знаю.
Пусть отдельным сообщением.
Добавление своей папки как SpecialFolder.
Google : Sams Teach Yourself Visual Studio .NET 2003 in 21 Days
Ссылка на кусок кода. Что он делает я не вчитывался. Вроде похоже. Set Environment.SpecialFolder.LocalApplicationData using C#
Предупреждение: Цитата:
Please don't do this.
These folder paths don't belong to your application, and changing them in this manner will not work for a domain user who has a folder redirection policy.
-
LilLoco
Re: .NET - [решено] Пустая строка в функции Environment.GetFolderPath() C#
Цитата lxa85:
Ей кстати не передан никакой параметр
В коде, я конечно же его указывал. В противном случае не компилировалось бы.
Цитата lxa85:
Папка физически не существует, если она не была создана операционной системой, была удалена или является виртуальным каталогом, таким как "Мой компьютер", которому не сопоставлен физический путь.
Папка существует. Пытаюсь получить путь к моим документам.
К системной папке путь возвращается.
Исходя из этого я и подумал, что проблема в русских символах. Т.к. в пути к моим документам есть директория Пользователи.
Проблема, видимо, в среде SharpDevelove. Через MS Visual Studio 2010 Express все отлично работает.
Спасибо за ссылки, будет интересно изучить.
Ей кстати не передан никакой параметр
.NET - [решено] Пустая строка в функции Environment.GetFolderPath() C#
В коде, я конечно же его указывал. В противном случае не компилировалось бы.
Цитата lxa85:
Папка физически не существует, если она не была создана операционной системой, была удалена или является виртуальным каталогом, таким как "Мой компьютер", которому не сопоставлен физический путь.
.NET - [решено] Пустая строка в функции Environment.GetFolderPath() C#
Папка существует. Пытаюсь получить путь к моим документам.
К системной папке путь возвращается.
Исходя из этого я и подумал, что проблема в русских символах. Т.к. в пути к моим документам есть директория Пользователи.
Проблема, видимо, в среде SharpDevelove. Через MS Visual Studio 2010 Express все отлично работает.
Спасибо за ссылки, будет интересно изучить.
-
Iska
Re: .NET - [решено] Пустая строка в функции Environment.GetFolderPath() C#
Мне только одно интересно — почему не пользуются рекомендованные
CSIDL (Windows)
или новое Known Folders (Windows)
?-
LilLoco
Re: .NET - [решено] Пустая строка в функции Environment.GetFolderPath() C#
Цитата Iska:
почему не пользуются рекомендованные CSIDL (Windows) или новое Known Folders (Windows)?
А вот это у меня напрочь вылетело из головы. Спасибо за напоминание.
почему не пользуются рекомендованные CSIDL (Windows) или новое Known Folders (Windows)?
.NET - [решено] Пустая строка в функции Environment.GetFolderPath() C#
А вот это у меня напрочь вылетело из головы. Спасибо за напоминание.