Việc sử dụng hợp pháp thư mục Tài liệu Windows Windows trong các chương trình


40

Bất cứ ai thích thư mục Tài liệu của họ chỉ chứa những thứ họ đặt ở đó đều biết rằng thư mục Tài liệu tiêu chuẩn hoàn toàn không phù hợp với nhiệm vụ này. Mọi chương trình dường như muốn đưa các cài đặt, dữ liệu hoặc thứ gì đó không liên quan vào thư mục Documents , mặc dù thực tế là có các thư mục dành riêng cho công việc này 1 .

Để điều này không có vẻ trống rỗng, hãy lấy thư mục "Tài liệu" cá nhân của tôi làm ví dụ. Tôi không bao giờ sử dụng nó, trong mọi trường hợp, tôi không bao giờ lưu bất cứ thứ gì vào thư mục này. Chưa hết, nó chứa 46 thư mục và 3 tệp ở cấp cao nhất, với tổng số 800 tệp trong 500 thư mục. Đó là 190 MB "tài liệu" tôi không tạo ra. Rõ ràng bất kỳ tài liệu thực tế sẽ ngay lập tức bị mất trong mớ hỗn độn này.

Câu hỏi của tôi là : có thể làm bất cứ điều gì để cải thiện tình hình đủ để làm cho "Tài liệu" trở lại hữu ích, trong vòng 5 năm tới? Các lập trình viên có thể được giáo dục bằng cách nào đó không sử dụng nó như một bãi rác? Hệ điều hành có thể bắt đầu báo cáo một số vị trí "giả" được ẩn trong AppData thông qua các API hiện có, trong khi chỉ cho phép Explorer và các hộp thoại Mở / Lưu khác nhau để biết thư mục Tài liệu "thực" nằm ở đâu không? Hoặc có bất kỳ nỗ lực hoàn toàn vô ích hoặc thậm chí không cần thiết?


1 Đối với bản ghi, đây là tóm tắt nhanh về các thư mục tiêu chuẩn khác nhau nên được sử dụng thay vì "Tài liệu":

  • RoamingAppDatacho các dữ liệu và cài đặt cụ thể của người dùng . Đây là các thư mục để sử dụng cho dữ liệu không tạm thời sử dụng cụ thể. Mọi thứ được đặt ở đây sẽ có sẵn trên bất kỳ máy nào mà người dùng đã đăng nhập vào trong các mạng nơi cấu hình này. Không đặt các tệp lớn ở đây vì chúng làm chậm đăng nhập / đăng xuất trong các môi trường như vậy.
  • LocalAppDatacho dữ liệu và cài đặt dành riêng cho người dùng và máy . Dữ liệu này khác nhau cho mọi người dùng và mọi máy. Đây cũng là nơi nên đặt dữ liệu cụ thể của người dùng rất lớn.
  • ProgramDatacho các dữ liệu và cài đặt dành riêng cho máy . Đây là giống nhau bất kể người dùng nào đã đăng nhập và sẽ không chuyển vùng đến các máy khác trong mạng.
  • GetTempPathcho tất cả các tệp có thể bị xóa mà không mất dữ liệu khi không sử dụng. Đây cũng nơi dành cho những thứ như cache , vì giống như dữ liệu tạm thời, bộ đệm không cần phải sao lưu. Đặt bộ nhớ cache lớn của bạn ở đây và bạn sẽ tiết kiệm cho người dùng của mình một số rắc rối sao lưu.

"Tài liệu" riêng của mình nên chỉ bao giờ được sử dụng nếu người dùng xác định nó bằng tay bằng cách nhập một đường dẫn hoặc chọn nó trong một hộp thoại Save. Đó là lần duy nhất thích hợp để lưu nội dung trong "Tài liệu".


Thảo luận về suy nghĩ này nên được thực hiện để meta.PE .
Josh K

"Hệ điều hành có thể bắt đầu báo cáo một số vị trí" giả "được ẩn trong AppData thông qua các API hiện có hay không, trong khi chỉ cho phép Explorer và các hộp thoại Mở / Lưu khác nhau để biết thư mục Tài liệu" thực "nằm ở đâu?" Bất cứ điều gì làm giảm sức mạnh của người dùng là xấu. Và bởi người dùng, ý tôi là người dùng biết cách lập trình cho tự động hóa.
thay thế

1
Tôi cảm thấy cần phải làm rõ rằng thư mục Documents trên tất cả các máy tính của tôi không có rác, vì tôi chạy các hộp Linux. Tôi biết điều này được gắn thẻ 'Windows', nhưng không nơi nào trong bài ca ngợi vinh quang này, bạn đã đề cập đến hệ điều hành nào bạn sử dụng.
Sevenseacat

1
Rõ ràng vấn đề ở đây nằm ở việc Microsoft cho phép điều này xảy ra và thậm chí còn thúc đẩy nó - hãy xem Visual Studio / SQL Server Management Studio. Một câu hỏi thú vị là - có nơi nào tốt để nói về Microsoft về vấn đề này không?
Chris Nevill

1
Cài đặt OneDrive hiện tại làm cho điều này thậm chí còn tồi tệ hơn. Bởi vì nó thiết lập thư mục Documents bên trong OneDrive (đây thực sự là một ý tưởng hay). Nhưng tôi mới có 1 giờ gần như không có internet, cho đến khi tôi nhận thấy Xamarin nghĩ rằng đó là một ý tưởng hay để đẩy Android NDK vào thư mục Tài liệu (OneDrive) của tôi. 3 máy tính được đồng bộ hóa khác của tôi tự động tải xuống tất cả các tệp. 1,9 GB ...
Matt

Câu trả lời:


19

Cần phải có một số động cơ rõ ràng. Ví dụ: nếu người dùng phải cung cấp quyền lưu trong thư mục Tài liệu (khi cài đặt), lập trình viên sẽ muốn tránh kích hoạt hộp thoại đáng sợ đó.

Khi bạn có động lực, mọi người sẽ tự nhiên vấp phải tài liệu như "Lưu dữ liệu chương trình cụ thể của máy trong ProgramData" trong khi cố gắng giải quyết nó.

Trên thực tế, rất nhiều vấn đề có thể được giải quyết bằng một khung quyền tốt đẹp ...


Âm thanh hơi giống hộp cát của Apple cho Mac OS X: Bạn chỉ có thể lưu ở một vị trí tùy ý bằng cách đi qua hộp thoại Điều khiển hệ điều hành cho phép bạn chọn vị trí lưu. Nếu người dùng nhấp vào OK, nó sẽ mở khóa thư mục để sử dụng trong tương lai.
Laurent Bourgault-Roy

4

Câu hỏi của tôi là: có thể làm bất cứ điều gì để cải thiện tình hình đủ để làm cho "Tài liệu" trở lại hữu ích, trong vòng 5 năm tới?

Về lý thuyết, một cái gì đó có thể được thực hiện. Về lý thuyết Microsoft có thể:

  • Hãy đến một nơi tốt hơn để đặt các tệp cài đặt người dùng (trong quá trình, nhận ra rằng rất nhiều ứng dụng có lý do hợp lệ để đặt cài đặt trong các tệp).
  • Thêm phần này vào hướng dẫn dành cho nhà phát triển ứng dụng Windows tiêu chuẩn. (Tôi cho rằng các hướng dẫn như vậy có tồn tại.)
  • Làm cho một vấn đề lớn về việc tuân thủ các ứng dụng theo hướng dẫn, ví dụ thông qua một số loại chứng nhận hoặc bằng cách tạo và xuất bản phiếu ghi điểm tuân thủ. "Đặt tên và xấu hổ" có thể làm việc kỳ diệu ...

Phải nói rằng Apple có truyền thống chủ động hơn nhiều với loại điều này. Và nó cho thấy chất lượng của những thứ chạy trên nền tảng của họ.


4
Điều đáng chú ý là chính Microsoft là một kẻ phạm tội lớn (hoặc, ít nhất, một số nhóm của Microsoft là những kẻ phạm tội lớn).
Peter Taylor

Hoàn toàn đồng ý với quan điểm "điều lớn". Đối với một nơi tốt hơn - tôi nghĩ rằng hồ sơ chuyển vùng chưa quá tệ, chỉ là có quá nhiều người không biết về nó, hoặc tệ hơn, đặt các tệp lớn (2GB +) vào đó. Đặc biệt là các trò chơi ...
Roman Starkov

2

Tôi nghĩ rằng bạn trả lời câu hỏi trong đó nó sôi sục đến giáo dục lập trình viên. Tôi không biết đủ về API Windows và nếu lưu trữ nội dung trong Documentsđó đặc biệt dễ dàng, nhưng nếu không thì các ứng dụng không nên làm ô nhiễm nó. Tôi nghĩ rằng sẽ có một vị trí cho mỗi người dùng được biết nơi dữ liệu có thể cư trú. Đối với loại dữ liệu bạn nói, Mac OS X sử dụng ~/Librarythư mục, mặc dù một số ứng dụng vẫn dính những thứ bên dưới Documents. Có lẽ một cái gì đó tương tự nên (không?) Tồn tại cho Windows.

Cá nhân, tôi giữ Tài liệu của mình trên một thư mục có cùng tiêu đề trong thư mục gốc Dropbox của tôi, giúp tăng thêm mức độ công việc cho tôi, nhưng giúp tôi tránh khỏi vấn đề bạn đã nêu ra.


2

Mặc dù tôi hiểu rằng bạn muốn tham gia vào một cuộc thảo luận về việc khiến các nhà phát triển ngừng thực hiện việc này, nhưng nó có thể sẽ trở thành một trong những điều như biểu tượng thông báo trên thanh tác vụ không thể dừng lại để Microsoft chỉ quét chúng dưới tấm thảm.

Trước đây tôi đã viết về thư mục Tài liệu, có vẻ như nó di chuyển ra khỏi một khu phố xấu . Là một người dùng, tôi đã nghĩ ra một loạt các bản hack để cố gắng tự làm sạch nó. Tôi sẽ đánh dấu tất cả các thư mục không được mời là "ẩn" sẽ khiến chúng biến mất khỏi Explorer. Tôi sẽ tạo các liên kết tượng trưng cho các thư mục Visual Studio 2005, 2008, 2010 vào một thư mục "Visual Studio" chung, v.v.

Nhưng ngay cả với các tập lệnh PowerShell để tự động hóa nó, tôi vẫn cảm thấy chán nản khi thực hiện nó trên mọi máy mới tôi sử dụng. May mắn thay, trong Windows 7 có một tùy chọn khác hoạt động khá tốt đối với tôi.

Vì Windows 7 có xu hướng mặc định cho thư viện "Tài liệu" trái ngược với thư mục Tài liệu. Tôi chỉ đơn giản là đã xóa thư mục% userprofile% \ Documents khỏi thư viện này và thay vào đó đã thêm thư mục Dropbox của tôi. Vì vậy, bây giờ mở / lưu hộp thoại mặc định cho vị trí này và khi tôi nhấp vào Bắt đầu -> Tài liệu, nó sẽ đưa tôi đến Dropbox của tôi.

Cuối cùng, tôi rất muốn thấy một số loại chứng nhận cơ bản cho các ứng dụng tương tự như nguyên tắc của App Store trên iOS. Nhưng họ thậm chí không thể khiến các nhà sản xuất trình điều khiển ký tên vào trình điều khiển của họ ...


1
Vì vậy, nói cách khác, bạn nghĩ rằng không có gì có thể được thực hiện để cứu vãn nó, nhưng không sao vì có những ý tưởng tốt hơn trôi nổi xung quanh. +1.
Roman Starkov

1

Tôi nghĩ rằng chiến lược dài hạn nên dừng lưu trữ bất cứ thứ gì ngoài tài liệu trong tệp. Dữ liệu hệ thống, đặc biệt là cài đặt, nên được lưu trữ trong các hệ thống lưu trữ giống với cơ sở dữ liệu hơn hệ thống tệp. Điểm thưởng nếu cơ sở dữ liệu đó có thể được đồng bộ hóa dễ dàng và tự động với một dịch vụ trên web, do đó bạn thực sự có một bộ cài đặt bất kể số lượng máy tính bạn sử dụng và ở đâu.

Tôi không biết nhiều về lịch sử của các hệ thống tập tin, nhưng dường như nó đã được nhận ra từ khá sớm trên hệ thống đó và các tập tin thực thi là một điều khác biệt về cơ bản so với các tài liệu. Vì vậy, những thứ đó đã được cất gọn trong một thư mục đặc biệt (sau đó được gọi là thư mục) C:\DOSvà người dùng về cơ bản kiểm soát phần còn lại của ổ đĩa.

Không ai thực sự dự đoán được các hệ thống phức tạp và khó kiểm soát hơn sẽ trở nên như thế nào trong nhiều năm qua và điều này sẽ gây ra sự lộn xộn như thế nào. Tôi nghĩ rằng đã đến lúc phải suy nghĩ lại về công nghệ từ cơ sở và tận dụng sức mạnh tổng hợp của đám mây. Điểm thưởng nếu một giải pháp nguồn mở khả thi cất cánh trước khi một công ty thực hiện nó :)


3
Sẽ không có ý nghĩa hơn khi làm điều ngược lại, tức là chỉ lưu trữ nội dung hệ thống dưới dạng tệp và có sẵn dữ liệu người dùng trong cơ sở dữ liệu, đặc biệt là nếu được đồng bộ hóa qua các dịch vụ web?
Roman Starkov

1
Hừm, các chi tiết chắc chắn cần một số thông tin ... nhưng điểm thực sự tôi đang cố gắng thực hiện là chỉ các tài liệu trong thuật ngữ thực (tức là các tệp mà người dùng thực sự làm việc không liên quan gì đến việc chạy hệ thống) thực sự phù hợp vào phép ẩn dụ của tập tin.
Timwi

Ngoài ra, tôi không chắc chắn điều này giải quyết vấn đề. Nếu các chương trình có quyền truy cập vào hệ thống lưu trữ dành riêng cho tài liệu người dùng, họ vẫn có thể đặt rác ở đó. Những gì được yêu cầu là một cái gì đó ngăn chặn các chương trình làm điều này, thông qua các phương tiện kỹ thuật hoặc bằng cách khiến các lập trình viên chỉ dừng lại một cách tự nguyện.
Roman Starkov

Sổ đăng ký là một hệ thống như vậy và nó không hoạt động tốt như vậy. Tôi không nghĩ cách tiếp cận appdata nơi các chương trình lưu trữ tệp với cài đặt riêng của họ là xấu.
Pieter B

1

Ngay cả khi một số chương trình vẫn lưu trữ một số dữ liệu trong Tài liệu , tôi nghĩ rằng hầu hết lưu trữ dữ liệu của họ trong AppData , vì vậy họ đã đi đúng hướng imho, tuy nhiên không có nhiều người dùng có thể làm: mỗi chương trình chịu trách nhiệm về những gì nó làm.


1
Tôi đồng ý; Người dùng bất lực. Điều này chỉ có thể được giải quyết bởi các lập trình viên.
Roman Starkov

1

Giải pháp:
1. Nhấp chuột phải vào thư mục 'Tài liệu' và chọn tab 'vị trí'.
2. Thay đổi vị trí 'Tài liệu' thành một nơi khác mà tôi chọn 'C: \ Admin \ Configs' (sau khi hoàn thành, tất cả các ứng dụng, viết vào 'tài liệu' sẽ được gửi đến C: \ Admin \ Configs.

Nhưng điều này chỉ giải quyết được một nửa vấn đề, bước tiếp theo sẽ khá rõ ràng.

  1. Tạo một thư mục mới trong 'C: \ User \ Documentation'

Sau đó, bạn có thể thêm thư mục đó vào các thư viện và xóa thư mục cũ, tôi cố tình đặt một tên thư mục khác trong 'C: \ User \ ** Tài liệu **' vì tôi muốn đảm bảo không có gì khó có thể đi đến đó thư mục.

Nếu thư mục 'tài liệu' xuất hiện lại trong C: \ User \ của bạn vì thực tế trên, chỉ cần nhấp chuột phải vào thư mục và biến nó thành một thư mục vô hình.


0

Lưu trữ các cài đặt trong tệp văn bản là một giải pháp đa nền tảng.

Trừ khi các nhà phát triển tạo ra một tiêu chuẩn cơ sở dữ liệu cài đặt đa nền tảng, tôi nghĩ rằng hầu hết chúng ta sẽ tiếp tục sử dụng các tệp văn bản được đổ vào thư mục người dùng.

Những người trong chúng ta thông minh sẽ tạo ra các giao diện cài đặt khác nhau cho các hệ thống cho phép các công cụ lưu trữ cài đặt chuyên dụng (như Windows Registry).


1
Lưu ý rằng thư mục "Tài liệu" không phải là thư mục "người dùng". "Tài liệu" thư mục là một thư mục con của thư mục của người dùng, mục đích được coi là nơi người dùng lưu của riêng mình tài liệu. Vấn đề là các chương trình đã quyết định đặt nội dung của chúng vào thư mục "Tài liệu", mặc dù có những nơi tốt hơn (và được ghi lại như vậy) để cài đặt chương trình đi.
Dean Harding

1
Đây là một ví dụ tốt về một con đường dẫn đến Tài liệu lộn xộn. Mọi người chuyển một chương trình mà không biết nhiều về Windows và bỏ nội dung của họ vào thư mục đầu tiên xuất hiện trong đầu. Có thể tìm "Tài liệu" dễ dàng hơn nhiều so với tìm "AppData", đặc biệt là vì sau này liên quan đến việc quyết định đưa nó vào hồ sơ chuyển vùng hoặc hồ sơ địa phương - những thuật ngữ xa lạ với bất kỳ ai không liên quan sâu sắc đến phát triển Windows.
Roman Starkov

Đồng ý và một lần nữa - giải pháp thực sự là có một công cụ lưu trữ cài đặt đa nền tảng tiêu chuẩn .
Craige

1
Sẽ không xảy ra. Câu hỏi ban đầu là về việc giáo dục lại tất cả các lập trình viên Windows và câu trả lời của bạn là đào tạo lại mọi lập trình viên. Bạn cũng sẽ không bắt các lập trình viên Unix / Linux mua vào cơ sở dữ liệu cài đặt, bởi vì có những lý do rất chính đáng để đặt chúng dưới dạng tệp văn bản và bạn sẽ phải đối mặt với khả năng chống lại việc làm theo cách của Microsoft.
David Thornley
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.