Легальне використання папки «Документи» 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 Studio Studio. Цікаве запитання - чи є хороше місце, коли можна попросити Microsoft про цю проблему?
Кріс Невілл

1
Поточні налаштування OneDrive роблять це ще гірше. Тому що це встановлення папки "Документи" в OneDrive (що насправді приємна ідея). Але в мене просто 1 годину майже не було Інтернету, поки я не помітила, що Xamarin не подумала, що буде непоганою ідеєю просунути Android NDK у свою папку (OneDrive) Документи. Мої інші 3 синхронізовані комп’ютери автоматично завантажували всі файли. 1,9 ГБ ...
Метт

Відповіді:


19

Потрібно було б мати якийсь видимий стимул. Наприклад, якщо користувачам довелося надати дозвіл на збереження у папці Документи (під час встановлення), програмісти хочуть уникнути запуску цього страшного діалогу.

Після того, як ви отримаєте стимул, люди, природно, натрапляють на документацію на зразок "Збережіть дані програми для програми в ProgramData", намагаючись вирішити її.

Насправді, багато проблем можна було б вирішити завдяки приємній системі дозволів ...


Звучить трохи як Apple Sandbox для Mac OS X: Ви можете зберегти у довільному місці лише пройшовши діалогове вікно керованого ОС, яке дозволяє вибрати місце збереження. Якщо користувач натисне ОК, він розблокує каталог для подальшого використання.
Лоран Буро-Рой

4

Моє запитання: чи можна щось зробити для поліпшення ситуації, щоб зробити «Документи» знову корисними, скажімо, протягом наступних 5 років?

Теоретично щось можна зробити. Теоретично Microsoft може:

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

Треба сказати, що Apple традиційно була набагато активнішою щодо подібних речей. І це показує якість речей, які працюють на їх платформах.


4
Варто зазначити, що Microsoft є самим великим правопорушником (або, принаймні, деякі команди Microsoft є великими правопорушниками).
Пітер Тейлор

Повністю згоден з пунктом "великої речі". Що стосується кращого місця - я думаю, що роумінговий профіль уже не надто поганий, це просто те, що занадто багато людей, які про це не знають, або, що ще гірше, поміщають величезні (2 ГБ +) файли. Особливо ігри ...
Роман Старков

2

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

Особисто я зберігаю свої документи у однойменній папці під коренем Dropbox, що додає мені додатковий рівень роботи, але позбавляє мене від проблеми, яку ви порушили.


2

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

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

Але навіть із сценаріями PowerShell для автоматизації цього мені стало нудно робити це на кожній новій машині, яку я використовував. На щастя, в Windows 7 є ще один варіант, який досить добре працює для мене.

Оскільки Windows 7 має тенденцію за замовчуванням до бібліотеки "Документи" на відміну від папки "Документи" . Я просто видалив папку% userprofile% \ документи з цієї бібліотеки і замість цього додав свою папку Dropbox. Тож тепер відкрийте / збережіть діалогові діалогові вікна за замовчуванням для цього місця, і коли я натискаю Пуск -> Документи, він переносить мене до свого Dropbox.

Зрештою, я хотів би побачити якусь базову сертифікацію для додатків, схожих на інструкції щодо iOS App Store. Але вони навіть не можуть змусити виробників водіїв підписати своїх водіїв ...


1
Інакше кажучи, ви думаєте, що нічого не можна зробити, щоб його врятувати, але це нормально, оскільки навколо них плавають кращі ідеї. +1.
Роман Старков

1

Я думаю, що довгостроковою стратегією має бути припинення зберігання у файлах нічого іншого, крім документів. Системні дані, особливо налаштування, повинні зберігатися в системах зберігання даних, які більше нагадують базу даних, ніж файлову систему. Бонусні бали, якщо цю базу даних можна легко та автоматично синхронізувати з послугою в Інтернеті, тому ви фактично маєте один набір установок незалежно від того, скільки комп'ютерів ви використовуєте та де.

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

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


3
Чи не було б більше сенсу робити навпаки, тобто зберігати лише системні речі у вигляді файлів та мати дані користувачів у базах даних, особливо якщо вони синхронізовані через веб-сервіси?
Роман Старков

1
Гм, деталі, безумовно, потребують певної розгортки ... але справжній момент, який я намагався зробити, - це те, що справді підходять лише документи в реальному терміні (тобто файли, над якими користувач насправді працює, які не мають нічого спільного з запуском системи). в метафору файлу.
Тімві

Крім того, я не впевнений, що це стосується проблеми. Якщо програми мають доступ до системи зберігання даних, присвяченої документам користувача, вони все ще можуть розмістити свої сміття там. Що потрібно, це те, що зупиняє програми робити це, або за допомогою технічних засобів, або через те, що програмісти просто добровільно зупиняються.
Роман Старков

Реєстр був такою системою, і він не спрацював так добре. Я не думаю, що підхід програми, де програми зберігають файли з власними налаштуваннями, не так вже й погано.
Пітер Б

1

Навіть якщо якась програма все ще зберігає деякі дані в Документах , я думаю, що більшість зберігає свої дані в AppData , тому вони вже йдуть у правильному напрямку, однак не так багато користувачів можуть зробити: кожна програма відповідає за те, що це робить.


1
Я згоден; користувачі безпорадні. Це можуть вирішити лише програмісти.
Роман Старков

1

Рішення:
1. Клацніть правою кнопкою миші папку «Документи» та виберіть вкладку «Розташування».
2. Змініть розташування "Документи" на якесь інше місце, яке я вибрав "C: \ Адміністратор \ Налаштування" (як тільки це буде зроблено, усі програми, записані на "документи", надішліть на C: \ Admin \ Configs.

Але це вирішує лише половину проблеми, наступний крок повинен бути досить очевидним.

  1. Створіть нову папку у "C: \ User \\ Документація"

Тоді ви зможете додати цей каталог до бібліотек і видалити старий, я навмисно встановив інше ім'я папки у "C: \ User \ ** Документація **", тому що я хотів переконатися, що нічого не може просто важкий шлях до цього папку.

Якщо папка "документи" знову з'явиться у вашому C: \ User \ через вищезазначений факт, просто клацніть правою кнопкою миші папку та зробіть її невидимою папкою.


0

Збереження налаштувань у текстовому файлі - це загальне кросплатформене рішення.

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

Ті, хто з нас розумні, створять різні інтерфейси налаштувань для систем, які дозволять використовувати спеціалізовані системи зберігання налаштувань (наприклад, реєстр Windows).


1
Зауважте, що папка "Документи" не є "користувачем". Папка «Документи» - це підкаталог каталогу користувача, намір якого повинен був бути там, де користувач зберігав власні документи. Проблема полягає в тому, що програми вирішили також помістити свої речі у папку "Документи", навіть якщо є кращі (і задокументовані як такі) місця для налаштувань програми.
Дін Гардінг

1
Це хороший приклад одного шляху до безладу Документів. Люди переносять програму, не знаючи багато про Windows, і скидають свої речі в перший каталог, який спадає на думку. Напевно, набагато простіше знайти "Документи", ніж знайти "AppData", тим більше, що остання передбачає вирішити, чи потрібно розміщувати її в роумінгу чи локальному профілі - незнайомі умови для тих, хто не має глибокого стосунку до розробки Windows.
Роман Старков

Домовились, і знову ж таки - справжнє рішення - мати стандартний механізм зберігання налаштувань крос-платформ.
Крейдж

1
Не відбудеться. Оригінальне запитання стосується перевиховання всіх програмістів Windows, а ваша відповідь - перевиховання кожного програміста. Також ви не збираєтесь змушувати програмістів Unix / Linux купувати в базі даних налаштувань, тому що є дуже вагомі причини, щоб залишити їх як текстові файли, і ви зіткнетеся з додатковим опором робити такі дії, як Microsoft.
Девід Торнлі
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.