Thư mục không ẩn không hiển thị trong Explorer, nhưng chương trình tạo ra nó có thể truy cập nó


26

Tôi đang sử dụng IMAPSize để sao lưu hộp thư của mình. Quá trình chỉ cần bỏ nội dung của hộp thư của bạn vào .emlcác tệp trên đĩa của bạn. Dù sao, hộp thư đầu tiên tôi sao lưu xuất hiện như tôi mong đợi. Tuy nhiên, cái tiếp theo không hiển thị trong Explorer và, nếu tôi nhập nó vào thanh địa chỉ, nó sẽ cho tôi biết rằng nó không tồn tại.

Tuy nhiên, IMAPSize khẳng định rằng các tệp ở đó. (A rất nhiều văn bản đĩa đã được thực hiện trong hoạt động.) Hơn nữa, thư mục nào xuất hiện trong hộp thoại thư mục Windows và - như tôi đã có các công cụ GNU cài đặt - nó hiển thị trong ls(nhưng không phải trong tự nhiên dir). Tôi không thể cdvào thư mục, nhưng lsdường như không thể truy cập được (và thực sự, các thư mục và tệp tôi mong đợi sẽ xuất hiện ở đó).

cửa sổ nhắc lệnh hiển thị danh sách

Cũng lưu ý rằng dấu thời gian và kích thước tệp backup.dblà khác nhau ở đầu ra dirls -lđầu ra.

Tóm lại: Chuyện gì đang xảy ra ở đây và làm cách nào để khắc phục nó!?


1
Sự khác biệt dễ thấy duy nhất mà tôi thấy là ls -lhiển thị số lượng liên kết cứng đặc biệt vào các thư mục và tệp "ẩn" ... Tôi không biết tại sao, đó cũng không phải là cách mà một liên kết cứng được giải thích trong vùng đất NTFS.
Xophmeister

... Chỉ cần xác nhận: Tôi có thể truy cập dữ liệu trong các tệp "ẩn", từ dòng lệnh, bằng cách sử dụng cat(một lõi GNU khác). Tuy nhiên, một lần nữa, các công cụ Windows gốc (ví dụ type:) thậm chí không thể tìm thấy tệp.
Xophmeister

Câu trả lời:


63

Hãy để tôi đoán: chương trình đã tạo tệp và các tiện ích GNU, không chạy với tư cách quản trị viên.

Đầu tiên, một số lịch sử. Vào thời của Windows XP, rất nhiều chương trình cho rằng chúng sẽ luôn được chạy với tư cách quản trị viên và sẽ viết thư đến những nơi như C:\WindowsC:\Program Files (x86)với sự từ bỏ hoang dã. Với Vista, Microsoft đã cố gắng tạo ra ít quản trị viên hơn, nhưng người dùng chuẩn không thể viết thư cho những nơi đó. Họ cần những chương trình đáng ngờ đó để tiếp tục hoạt động (nếu không mọi người sẽ không nâng cấp). Vì vậy, họ đã giới thiệu một tính năng kỳ diệu gọi là ảo hóa UAC .

Các chương trình chạy như người dùng tiêu chuẩn có thể nghĩ rằng việc ghi vào các vị trí quan trọng đã thành công, nhưng trên thực tế, Windows đã thu thập dữ liệu ở vị trí của mỗi người dùng. Khi các chương trình đó tìm kiếm các tệp trong một thư mục, Windows sẽ kiểm tra xem liệu có bất kỳ tệp nào trong kho ảo của địa điểm đó hay không và nếu có, nó sẽ thêm chúng vào danh sách thư mục. (Có chức năng tương đương cho Registry.)

Có vẻ như chương trình thư của bạn đã cố gắng ghi vào một nơi bên dưới Program Files (x86)trong khi chạy như một người dùng bình thường. Chữ viết đã được chuyển hướng, vì vậy nó không thực sự đi đến nơi đó. Chương trình vẫn có thể nhìn thấy nó, bởi vì Windows đang ảo tưởng về nó. Explorer không thấy nó bởi vì nó thông báo cho hệ điều hành rằng nó hoạt động tốt và do đó không cần chuyển hướng. Lệnh của dấu nhắc dirlệnh không phải là một chương trình (nó chỉ là một tính năng của cmd.exe), vì vậy nó cũng được coi là "biết" và do đó không được hiển thị các tệp tương thích. lsrõ ràng là một chương trình, không biết, vì vậy nó được xem các tệp tương thích.

Bạn sẽ tìm thấy tập tin của bạn ở đây:

%LOCALAPPDATA%\VirtualStore\Program Files (x86)\IMAPSize\backup

Trong khi chọc vào VirtualStore, bạn có thể ngạc nhiên về những chương trình không hoạt động tốt và cần mạng lưới an toàn ảo hóa.

Nếu bạn muốn dừng chuyển hướng, hãy chạy chương trình với tư cách quản trị viên hoặc lưu các bản sao lưu của bạn ở một vị trí mà bạn thực sự có thể ghi vào mà không có quyền quản trị viên.


16
Và ở đây tôi nghĩ rằng tôi biết Windows. Hoặc đây là một trò đùa ngu ngốc được thực hiện tốt, hoặc tôi đã học được một số ý nghĩa ngày hôm nay. cảm ơn, @Ben N!
Aganju

3
@Aganju Một vài tháng trước, tôi đã phải giúp một người dùng Windows tạo ra một cặp khóa cho WinSCP. Và những thứ đó trở nên vô hình theo cách tương tự như được mô tả trong câu hỏi. Tại thời điểm đó, tôi đã đưa ra giả thuyết về một lời giải thích khá giống với câu trả lời này. Tôi không bận tâm xác minh giả thuyết của mình, vì vấn đề đã được giải quyết bằng cách đặt tệp dưới thư mục chính của người dùng. Nhưng ít nhất tôi có thể xác nhận rằng câu trả lời này không giống như một trò đùa với tôi.
kasperd

3
Vâng, tôi sẽ bị nguyền rủa! Có tất cả chúng ở đó. Đó là hành vi kỳ lạ , ngay cả khi nó có ý định. Tôi nghĩ rằng tôi đã gặp lỗi hệ thống tập tin! ... Điều này cũng sẽ giải thích tại sao sao lưu hộp thư đầu tiên của tôi xuất hiện: Chương trình được chạy lần đầu tiên từ trình cài đặt ("Bạn có muốn chạy như vậy không?"), Mà sẽ nâng nó lên để có đặc quyền của Quản trị viên; trong khi chạy "ẩn" là người dùng cục bộ.
Xophmeister

1
@Aganju Tôi đoán bạn chưa bao giờ sử dụng Vista nhiều. Nó có một tính năng để hiển thị cho bạn các tệp ảo hóa trong Explorer; bởi vì vấn đề đã đủ phổ biến trong một vài năm. Vào thời điểm Win7 xuất hiện, hầu hết các phần mềm được sử dụng rộng rãi đã ngừng giả định rằng nó có thể ghi vào các thư mục con của thư mục cài đặt; và tính năng này đã được hiển thị ít hơn đáng kể hoặc có thể bị xóa hoàn toàn trong các phiên bản Windows mới nhất.
Dan Neely

4
@Xophmeister Đó là một sự đánh đổi. Như đã lưu ý trong câu trả lời, phần mềm ghi vào thư mục ứng dụng của riêng nó rất phổ biến trước Vista. Đây là một lỗ hổng bảo mật lớn, vì vậy nó phải được giải quyết. Các lựa chọn thay thế là 1) ngăn chặn việc ghi và phá vỡ tất cả các ứng dụng, 2) sử dụng ảo hóa để lưu các tệp vào một vị trí an toàn. 1) rõ ràng là không thể bảo vệ và rất nhiều so với SOP của Microsoft, và cuối cùng, nó sẽ chỉ dẫn đến mọi người điều hành mọi thứ dưới quyền quản trị viên như trước đây một lần nữa. Nó có thể gây nhầm lẫn, nhưng nó vẫn có thể là lựa chọn tốt nhất. Đừng viết thư mục nguy hiểm.
Luaan
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.