Законное использование папки Windows «Документы» в программах

40

Любой, кому нравится, чтобы их папка «Документы» содержала только то, что они там размещают, знает, что стандартная папка «Документы» совершенно не подходит для этой задачи. Кажется, что каждая программа хочет поместить свои настройки, данные или что-то одинаково не относящееся к папке « Документы », несмотря на то, что есть папки специально для этой работы 1 .

Чтобы это не звучало пусто, возьмите мою личную папку «Документы» в качестве примера. Я никогда не когда - либо использовать его, в том , что я никогда, ни при каких обстоятельствах, сохранить что - либо в эту папку сам. И все же он содержит 46 папок и 3 файла на верхнем уровне, всего 800 файлов в 500 папках. Это 190 МБ «документов», которые я не создавал. Очевидно, что любые настоящие документы немедленно потерялись бы в этом беспорядке.

Мой вопрос : можно ли что-нибудь сделать, чтобы улучшить ситуацию настолько, чтобы «Документы» снова стали полезными, скажем, в течение следующих 5 лет? Могут ли программисты быть как-то образованными в массовом порядке, чтобы не использовать их в качестве свалки? Может ли ОС начать сообщать о каком-то «поддельном» месте, скрытом под AppData, через существующие API, при этом только обозревателю и различным диалоговым окнам открытия / сохранения можно узнать, где находится «настоящая» папка «Документы»? Или любые попытки совершенно бесполезны или даже не нужны?


1 Для записи, вот краткий обзор различных стандартных каталогов , которые должны быть использованы вместо «Документы»:

  • RoamingAppDataдля пользовательских данных и настроек. Это каталог использовать для конкретных пользователей без временных данных. Все размещенное здесь будет доступно на любом компьютере , на котором данный пользователь входит в сети, где это настроено. Не размещайте большие файлы здесь, потому что они замедляют вход / выход из системы в таких средах.
  • LocalAppDataдля пользовательских и машинных данных и настроек. Эти данные различаются для каждого пользователя и каждой машины. Это также место, где должны быть размещены очень большие пользовательские данные.
  • ProgramDataдля машинных данных и настроек. Они одинаковы независимо от того, какой пользователь вошел в систему, и не будут перемещаться на другие машины в сети.
  • GetTempPathдля всех файлов, которые могут быть стерты без потери данных, когда они не используются. Это также место для таких вещей , как кэшей , так как временные данные, кэш не нужно быть подкреплены. Разместите здесь свой огромный кеш, и вы избавите своего пользователя от проблем с резервным копированием.

«Документы» сами должны только когда - либо будет использоваться , если пользователь указал вручную, введя путь или выбрав его в диалоговом окне сохранения. Это единственный раз, когда уместно сохранять вещи в «Документах».

Роман Старков
источник
Обсуждение этой мысли должно быть принято в meta.PE .
Джош К
«Может ли ОС начать сообщать о каком-то« поддельном »месте, скрытом под AppData через существующие API, при этом только обозревателю и различным диалоговым окнам« Открыть / Сохранить »можно узнать, где находится« настоящая »папка« Документы »?» Все, что уменьшает мощность пользователей, плохо. Под пользователями я подразумеваю пользователей, которые умеют программировать для автоматизации.
альтернатива
1
Я чувствую необходимость уточнить, что папка «Документы» на всех моих компьютерах свободна от мусора, потому что я использую Linux-боксы. Я знаю, что это помечено как «Windows», но нигде в этой прославленной речи вы не упомянули, какую ОС вы используете.
sevenseacat
1
Очевидно, что проблема здесь заключается в том, что Microsoft допускает это и даже предлагает это - взгляните на Visual Studio / SQL Server Management Studio. Интересный вопрос - есть ли хорошее место, чтобы разглагольствовать в Microsoft относительно этой проблемы?
Крис Невилл
1
Текущие настройки OneDrive делают это еще хуже. Потому что он устанавливает папку «Документы» внутри OneDrive (что на самом деле хорошая идея). Но у меня просто 1 час почти не было интернета, пока я не заметил, что Ксамарин подумал, что было бы неплохо вставить Android NDK в мою папку (OneDrive) Documents. Мои 3 других синхронизированных компьютера автоматически загрузили все файлы. 1,9 ГБ ...
Мэтт

Ответы:

19

Там должен быть какой-то видимый стимул. Например, если пользователям нужно было предоставить разрешение на сохранение в папке «Документы» (во время установки), программисты хотели бы избежать запуска этого страшного диалога.

Если у вас есть стимул, люди, естественно, наткнуться на документацию, такую ​​как «Сохранить данные программы для компьютера в ProgramData», пытаясь ее решить.

На самом деле, многие проблемы могут быть решены с помощью хорошей структуры разрешений ...

Крейг Гидни
источник
Звучит немного как песочница Apple для Mac OS X: Вы можете сохранить только в произвольном месте, пройдя через контролируемый OS OS диалог, в котором можно выбрать место сохранения. Если пользователь нажмет OK, он разблокирует каталог для будущего использования.
Лоран Бурго-Рой
4

Мой вопрос: можно ли что-нибудь сделать, чтобы улучшить ситуацию настолько, чтобы «Документы» снова стали полезными, скажем, в течение следующих 5 лет?

Теоретически что-то можно сделать. Теоретически Microsoft могла бы:

  • Придумайте лучшее место для размещения пользовательских файлов настроек (в процессе, признавая, что у многих приложений есть веские причины для установки настроек в файлах).
  • Добавьте это к стандартным рекомендациям разработчика приложений для Windows. (Я предполагаю, что такие рекомендации существуют.)
  • Сделайте большую вещь о соответствии приложений рекомендациям, например, с помощью какой-либо сертификации или создав и опубликовав оценочные карточки соответствия. «Называние и позор» могут творить чудеса ...

Надо сказать, что Apple традиционно была намного более активна в подобных вещах. И это проявляется в качестве материала, который работает на их платформах.

Стивен С
источник
4
Стоит отметить, что Microsoft сама по себе является крупным нарушителем (или, по крайней мере, некоторые команды Microsoft являются большими нарушителями).
Питер Тейлор
Полностью согласен с точкой "большой вещи". Что касается лучшего места - я думаю, что перемещаемый профиль уже не так уж и плох, просто слишком много людей не знают об этом или, что еще хуже, помещают туда огромные (более 2 ГБ) файлы. Особенно игры ...
Роман Старков
2

Я думаю, что вы отвечаете на вопрос в том смысле, что он сводится к образованию программистов. Я не знаю достаточно о Windows API, и если хранение вещей Documentsособенно легко, но если нет, то приложения не должны его загрязнять. Я думаю, что все сводится к тому, что для каждого пользователя известно место, где могут находиться данные. Для того типа данных, о которых вы говорите, Mac OS X использует эту ~/Libraryпапку, хотя некоторые приложения по-прежнему хранят информацию Documents. Может быть, что-то подобное должно (есть?) Существовать для Windows.

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

roguesys
источник
2

Хотя я понимаю, что вы хотите принять участие в дискуссии о том, как заставить разработчиков прекратить это делать, может оказаться, что одна из таких вещей, как значки уведомлений на панели задач, не может быть остановлена, поэтому Microsoft просто сунула их под коврик.

Ранее я писал в блоге о папке «Документы», сравнивая ее с выходом из плохого района . Как пользователь, я придумал кучу хаков для того, чтобы попытаться очистить его самостоятельно. Я бы пометил все незваные папки как «скрытые», что привело бы к их исчезновению из Проводника. Я хотел бы создать символические ссылки для папок Visual Studio 2005, 2008, 2010 в общую папку «Visual Studio» и т. Д.

Но даже с помощью сценариев PowerShell для его автоматизации мне надоело делать это на каждой новой машине, которую я использовал. К счастью, в Windows 7 есть еще один вариант, который мне подходит.

Поскольку в Windows 7 по умолчанию используется библиотека «Документы», а не папка «Документы». Я просто удалил папку% userprofile% \ documents из этой библиотеки и вместо этого добавил папку Dropbox. Итак, теперь диалоги открытия / сохранения по умолчанию находятся в этом месте, и когда я нажимаю Пуск -> Документы, он переносит меня в Dropbox.

В конечном счете, я бы хотел увидеть какую-то базовую сертификацию для приложений, аналогичных рекомендациям iOS App Store. Но они даже не могут заставить производителей драйверов подписывать свои драйверы ...

мистифицировать
источник
1
Другими словами, вы думаете, что ничего нельзя сделать, чтобы спасти это, но это нормально, потому что есть лучшие идеи, плавающие вокруг. +1.
Роман Старков
1

Я думаю, что долгосрочной стратегией должно быть прекращение хранения чего-либо, кроме документов в файлах. Системные данные, особенно настройки, должны храниться в системах хранения, которые больше похожи на базу данных, чем на файловую систему. Бонусные баллы, если эту базу данных можно легко и автоматически синхронизировать со службой в Интернете, поэтому у вас фактически есть один набор настроек независимо от того, сколько компьютеров вы используете и где.

Я не очень разбираюсь в истории файловых систем, но мне кажется, что она была реализована довольно рано в этой системе, и исполняемые файлы - это принципиально иная вещь, чем документы. Таким образом, они были уложены в специальную папку (затем называемую каталогом), C:\DOSи пользователь в основном контролировал оставшуюся часть диска.

Никто на самом деле не предсказал, насколько более сложными и неуправляемыми системами станут эти годы и какой это будет беспорядок. Я думаю, что пришло время переосмыслить технологию с нуля и использовать синергию облака. Бонусные баллы, если работоспособное решение с открытым исходным кодом взлетает раньше, чем компания :)

Timwi
источник
3
Разве не имеет смысла делать обратное, то есть хранить только системные файлы в виде файлов и иметь доступ к пользовательским данным в базах данных, особенно если они синхронизируются через веб-сервисы?
Роман Старков
1
Хм, детали, конечно, нуждаются в уточнении ... но реальная мысль, которую я пытался подчеркнуть, заключается в том, что в действительности подходят только документы в реальном выражении (то есть файлы, над которыми фактически работает пользователь, которые не имеют никакого отношения к работе системы) в метафору файла.
Тимви
Кроме того, я не уверен, что это решает проблему. Если у программ есть доступ к системе хранения, предназначенной для пользовательских документов, они все равно могут поместить туда свое барахло. Требуется что-то, что мешает программам делать это, либо техническими средствами, либо заставляя программистов просто добровольно останавливаться.
Роман Старков
Регистр был такой системой, и он не работал так хорошо. Я не думаю, что подход appdata, когда программы хранят файлы со своими настройками, настолько плох.
Питер Б
1

Даже если некоторые программы все еще хранят некоторые данные в Documents , я думаю, что большинство хранят свои данные вместо этого в AppData , так что они уже движутся в правильном направлении, однако, пользователи не могут многое сделать: каждая программа отвечает за то, что она делает.

wildpeaks
источник
1
Я согласен; пользователи беспомощны. Это может быть решено только программистами.
Роман Старков
1

Решение:
1. Щелкните правой кнопкой мыши папку «Документы» и выберите вкладку «Местоположение».
2. Измените местоположение «Документы» на другое место, которое я выбрал «C: \ Admin \ Configs» (после того, как это будет сделано, все приложения, пишущие в «документы», должны быть отправлены в C: \ Admin \ Configs.

Но это решает только половину проблемы, следующий шаг должен быть довольно очевидным.

  1. Создайте новую папку в «C: \ User \\ Documentation»

Затем вы сможете добавить этот каталог в библиотеки и удалить старый, я намеренно установил другое имя папки в «C: \ User \ ** Documentation **», потому что я хотел убедиться, что ничто не может быть просто жестким путем к этому папки.

Если папка «документы» снова появится в вашем C: \ User \ из-за вышеуказанного факта, просто щелкните правой кнопкой мыши по папке и сделайте ее невидимой папкой.

внутренний
источник
0

Хранение настроек в текстовом файле - универсальное кроссплатформенное решение.

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

Те из нас, кто умен, создадут различные интерфейсы настроек для систем, которые позволяют использовать специальные механизмы хранения настроек (например, реестр Windows).

Craige
источник
1
Обратите внимание, что папка «Documents» не является папкой «user». Папка «Документы» - это подкаталог каталога пользователя, предназначение которого должно было быть там, где пользователь сохранил свои собственные документы. Проблема в том, что программы решили поместить свои вещи также в папку «Документы», хотя есть и лучшие (и задокументированные как таковые) места для настройки программы.
Дин Хардинг
1
Это хороший пример одного пути к беспорядку Документов. Люди портируют программы, не зная много о Windows, и сбрасывают свои вещи в первый каталог, который приходит на ум. Вероятно, гораздо легче найти «Документы», чем найти «AppData», тем более что последний включает решение, помещать ли его в роуминг или локальный профиль - незнакомые термины для тех, кто не имеет большого отношения к разработке Windows.
Роман Старков
Согласитесь, и снова - реальное решение - иметь стандартный кроссплатформенный механизм хранения настроек.
Крейг,
1
Не произойдет. Первоначальный вопрос касается переобучения всех программистов Windows, а ваш ответ - переучить каждого программиста. Также вы не собираетесь заставлять программистов Unix / Linux покупать базу данных настроек, потому что есть очень веские причины оставлять их в виде текстовых файлов, и вы столкнетесь с дополнительным сопротивлением действиям Microsoft.
Дэвид Торнли