Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » .NET - [решено] Пустая строка в функции Environment.GetFolderPath() C#

Ответить
Настройки темы
.NET - [решено] Пустая строка в функции Environment.GetFolderPath() C#

В Поисках Истины


Сообщения: 802
Благодарности: 135


Конфигурация

Профиль | Отправить PM | Цитировать


Добрый день!

Ситуация такая: при вызове функции Environment.GetFolderPath() для получения пути к папке Temp или Мои документы возвращается пустая строка. Происходит это, по всей вероятности, из-за того, что в пути присутствуют русские символы (папка Пользователи). Как обойти это?

Спасибо!

P.S. IDE - SharpDevelope

-------
foreach(short w in new short[] {73,3,79,83,90,79,78,69}){
Console.Write((char)w);
}


Отправлено: 09:46, 07-02-2014

 

Аватара для lxa85

Необычный


Contributor


Сообщения: 4462
Благодарности: 994

Профиль | Сайт | Отправить PM | Цитировать


Цитата LilLoco:
Как обойти это? »
Заключить в кавычки? (Подсунуть строку cd C:\User\ ... \Temp из командной строки)
Посмотреть, в какой кодировке идет работа?
К сожалению сейчас проверить не на чем.

-------
- Я не разрешаю тебе быть плохой! Потому что плохие люди совершают плохие поступки. А это нехорошо!
(Из наставлений 5 летней девочки своей младшей сестре)


Отправлено: 11:23, 07-02-2014 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


В Поисках Истины


Сообщения: 802
Благодарности: 135

Профиль | Отправить PM | Цитировать


Цитата lxa85:
(Подсунуть строку cd C:\User\ ... \Temp из командной строки »
Не совсем понятно, что имеется ввиду.

Цитата lxa85:
Заключить в кавычки? »
Нечего заключать Функция - без параметров, при вызове она возвращает пустую строку.

-------
foreach(short w in new short[] {73,3,79,83,90,79,78,69}){
Console.Write((char)w);
}


Отправлено: 13:21, 07-02-2014 | #3


Аватара для User001

Ветеран


Сообщения: 740
Благодарности: 116

Профиль | Отправить PM | Цитировать


Цитата LilLoco:
Происходит это, по всей вероятности, из-за того, что в пути присутствуют русские символы »
Если вам не критично, можете переменные окружения поменять на англоязычные папки, чтобы проверить (пример).

Отправлено: 13:45, 07-02-2014 | #4


Аватара для lxa85

Необычный


Contributor


Сообщения: 4462
Благодарности: 994

Профиль | Сайт | Отправить PM | Цитировать


LilLoco, А может она и должна отдавать пустую строку?
Ей кстати не передан никакой параметр.
Документация 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.

-------
- Я не разрешаю тебе быть плохой! Потому что плохие люди совершают плохие поступки. А это нехорошо!
(Из наставлений 5 летней девочки своей младшей сестре)

Это сообщение посчитали полезным следующие участники:

Отправлено: 14:30, 07-02-2014 | #5


В Поисках Истины


Сообщения: 802
Благодарности: 135

Профиль | Отправить PM | Цитировать


Цитата lxa85:
Ей кстати не передан никакой параметр »
В коде, я конечно же его указывал. В противном случае не компилировалось бы.


Цитата lxa85:
Папка физически не существует, если она не была создана операционной системой, была удалена или является виртуальным каталогом, таким как "Мой компьютер", которому не сопоставлен физический путь. »
Папка существует. Пытаюсь получить путь к моим документам.
К системной папке путь возвращается.
Исходя из этого я и подумал, что проблема в русских символах. Т.к. в пути к моим документам есть директория Пользователи.

Проблема, видимо, в среде SharpDevelove. Через MS Visual Studio 2010 Express все отлично работает.

Спасибо за ссылки, будет интересно изучить.

-------
foreach(short w in new short[] {73,3,79,83,90,79,78,69}){
Console.Write((char)w);
}


Отправлено: 15:22, 07-02-2014 | #6


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Мне только одно интересно — почему не пользуются рекомендованные CSIDL (Windows) или новое Known Folders (Windows)?
Это сообщение посчитали полезным следующие участники:

Отправлено: 17:24, 07-02-2014 | #7


В Поисках Истины


Сообщения: 802
Благодарности: 135

Профиль | Отправить PM | Цитировать


Цитата Iska:
почему не пользуются рекомендованные CSIDL (Windows) или новое Known Folders (Windows)? »
А вот это у меня напрочь вылетело из головы. Спасибо за напоминание.

-------
foreach(short w in new short[] {73,3,79,83,90,79,78,69}){
Console.Write((char)w);
}


Отправлено: 11:28, 10-02-2014 | #8



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » .NET - [решено] Пустая строка в функции Environment.GetFolderPath() C#

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Использование - Windows Preinstallation Environment бесплатна? polonin Лицензирование продуктов Microsoft 2 09-07-2012 15:04
.NET - [решено] Environment.ProcessorCount SmallGod Программирование и базы данных 8 21-10-2010 00:02
[решено] Environment Variables semiono AutoIt 6 10-05-2009 14:49
Интерфейс - [решено] Установка и удаление программ - пустая строка everal-22 Microsoft Windows 2000/XP 21 12-03-2009 21:00
Почему создаётся пустая строка? 13ghost Вебмастеру 5 20-03-2007 00:47




 
Переход