Почему environment.specialfolder.mydocuments возвращает неверное значение?
У меня есть приложение WPF/.NET4.5.2, разработанное на компьютере с Windows 10, но развернутое на компьютере с Windows 7.
На моей машине разработки...
Environment.GetFolderPath( Environment.SpecialFolder.MyDocuments )
...правильно возвращает "C:/Users/<имя пользователя>/документы".
Когда я запускаю этот же код на целевой машине Windows 7, я получаю ту же самую папку, но на машине Windows 7 эта папка называется "C:/Users/<имя пользователя>/Мои Документы", так что мой код не может найти папку.
Что я уже пробовал:
Я нашел несколько статей об этом в сети. Во многих статьях автор объясняет, почему это неправильный способ сделать это (например, очевидно, что доступ к реестру не всегда будет работать по причинам, которые я мог бы понять, если бы у меня было еще меньше волос).
Единственная статья, которую я нашел, которая, кажется, имеет убедительный способ сделать это, это Получение всех "специальных папок" в .NET[^] , но это кажется очень сложным для такого общего требования.
Я не могу избавиться от ощущения, что здесь мне не хватает какого-то простого знания. Кто-нибудь знает, что здесь может быть не так?
Richard MacCutchan
Вы хотите сказать, что в Windows 7 Вы получаете строку "C:/Users/<username>/Documents", который не является фактическим именем?
Patrick Skelton
Это верно, да. Фактическая папка-это "Мои документы", тогда как в моем коде я получаю обратно только "документы". Как ни странно, если я запрошу каталог профиля пользователя, а затем вручную добавлю "\Documents "в свой код, я все равно не смогу получить доступ ни к чему в "C:\Users\<имя пользователя>\Documents'. Однако мне нужно провести больше тестов вокруг этого. Это был последний результат, который я получил вчера вечером, прежде чем мне пришлось быстро выйти из целевой машины.
Richard MacCutchan
Я использовал этот механизм и не имел с ним проблем. К сожалению, у меня больше нет системы Win 7, поэтому я не могу повторно протестировать ее.
Richard MacCutchan
На самом деле, теперь, когда я думаю об этом, у меня есть чувство, что это правильно. Фактическая папка-это "документы", а "Мои Документы" - это ссылка.
CHill60
Это и мое воспоминание тоже
Patrick Skelton
Спасибо за ответ, Ричард.
Если 'C:\Users\<имя пользователя> в\Мои Документы' представляет собой ссылку на существующий физический каталог C:\Users\<имя пользователя&ГТ;\документы-тогда не мой код сможет использовать реальный физический путь (т. е. 'C:\Users\<имя пользователя&ГТ;\документы') получить доступ к этой папке? Другими словами, Почему мой код вообще не работает?
Richard MacCutchan
Не видя вашего кода, я понятия не имею.
Patrick Skelton
Справедливое замечание. Я не могу попасть в целевую систему прямо сейчас. В следующий раз я постараюсь написать небольшой фрагмент кода, чтобы проиллюстрировать неудачу. Я добавлю его к своему вопросу в разделе "Что я пробовал".