Làm cách nào để khóa tệp trong Windows mà không thay đổi hoặc sử dụng các công cụ của bên thứ ba?


24

Có cách nào để khóa một tệp bằng các công cụ trên máy bay để nó không thể bị xóa hoặc ghi đè không?

Để kiểm tra các tập lệnh sao chép, tôi cần lock files temporarilykiểm tra xử lý lỗi trong các tập lệnh. Cho đến XP tôi đã sử dụng tải một tập tin trong debug.exe để khóa nó.

Có cách nào trong Windows 7 (và sau này) không?

Chỉnh sửa
Tôi biết rằng có những chương trình làm điều này. Câu hỏi của tôi là nếu có một cơ chế tích hợp trong các cửa sổ. Đôi khi tôi phải kiểm tra tập lệnh trên PC và không muốn cài đặt chương trình mới cho điều đó.

Edit2
Đây cũng là những gợi ý hay: Làm thế nào để cố tình khóa một tập tin? , tuy nhiên, cần các công cụ của bên thứ 3 hoặc thay đổi tệp sẽ bị khóa.


Liệu thủ thuật notepad có hiệu quả với bạn không?
nixda

1
@nixda Không. Nó ghi đè lên tập tin. Tôi cần phải khóa một tập tin hiện tại mà không thay đổi nó.
marsh-ngọ nguậy

Tôi hiểu rồi. Tôi rút lại phiếu bầu gần của mình
nixda

Câu trả lời:


45

Tôi nghĩ PowerShell có lẽ là cách gọn gàng nhất để thực hiện điều này. Một cái gì đó như sau:

#Specify the file name
$fileName = "C:\myfile.txt"

#Open the file in read only mode, without sharing (I.e., locked as requested)
$file = [System.io.File]::Open($fileName, 'Open', 'Read', 'None')

#Wait in the above (file locked) state until the user presses a key
Write-Host "Press any key to continue ..."
$null = $host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown")

#Close the file (This releases the current handle and unlocks the file)
$file.Close()

Trong khi tạm dừng, tập lệnh trên gây ra lời nhắc sau khi cố gắng mở "myfile.txt":

nhập mô tả hình ảnh ở đây


2
Tuyệt quá! Cảm ơn! Để xấu hổ, tôi phải thú nhận rằng tôi phát triển trong powershell và không nghĩ về việc sử dụng các lớp .net cho việc này. [Tôi hy vọng điều đó sẽ không tiến xa hơn :-)]
marsh-ngọ nguậy

1
Câu trả lời tốt đẹp. Đối với người tò mò, đây là liên kết MSDN với File::Openphương thức chi tiết các tham số của cuộc gọi (cụ thể là đối số cuối cùng 'None', từ chối chia sẻ tệp với bất kỳ luồng / tiến trình nào khác - và tương tự, các điều khoản tồn tại để khóa tệp chỉ đọc / ghi hoặc kết hợp chúng).
Đột phá

1
@moab Tệp được đóng và xử lý được phát hành ở cuối.
Dan

2
Lưu ý rằng $host.UI.RawUI.ReadKey(...)sẽ thất bại trong PowerShell ISE vì ReadKey không được triển khai cho ISE. Cách giải quyết là [void](Read-Host 'Press Enter to continue'). Không hoàn toàn giống như người dùng phải nhấn Enter chứ không phải bất kỳ phím nào. Tuy nhiên, đủ tốt cho hầu hết các mục đích. Cách giải quyết đến từ bài đăng trên blog này: jeffwouters.nl/index.php/2016/06/ mẹo
SimonTewsi

4

Vì tôi không thích cài đặt phần mềm mà tôi sẽ không thực sự sử dụng, tôi đã tìm thấy viên ngọc VBScript này:

Const ForAppending = 8
Set oFSO = CreateObject("Scripting.FileSystemObject")

Set f = oFSO.OpenTextFile("C:\Tst\My2.txt", ForAppending, True)

MsgBox "Press OK to unlock the file(s)"

Tất cả tín dụng đều thuộc về Torgeir Bakken, bạn có thể xem toàn bộ bài đăng tại đây: http://www.pcreview.co.uk/threads/how-to-lock-files.1518829/


Rất thích hợp cho những người không thích powershell như giải pháp ở trên
marsh-ngọ nguậy

0

Bạn có thể không đánh dấu nó là chỉ đọc? Điều này sẽ "khóa" tập tin một cách hiệu quả bằng cách không cho phép thay đổi hoặc xóa nó.

Lệnh attrib.exe có sẵn ở dòng lệnh và sẽ cho phép bạn đặt tệp hoặc thư mục ở chế độ chỉ đọc. Thông tin thêm về lệnh đó có thể được tìm thấy ở đây

Ngược lại, bạn có thể thực hiện điều tương tự thông qua GUI bằng cách nhấp chuột phải vào tệp hoặc thư mục mà bạn muốn đánh dấu chỉ đọc, chọn thuộc tính và đánh dấu vào ô Chỉ đọc. Nhấp vào Áp dụng / Ok sau đó áp dụng cài đặt mới cho tệp hoặc thư mục.


3
Thuộc tính chỉ đọc chỉ ngăn không cho sửa đổi chứ không xóa.
ComFalet

0

Sẽ không thể giới hạn quyền truy cập vào tệp bằng Tab Bảo mật, khi bạn nhấp chuột phải và vào Thuộc tính cho Tệp hoặc Thư mục?

Nếu người dùng có quyền truy cập của Quản trị viên vào PC, thì điều này có cho phép anh ta loại bỏ tất cả những người khác có khả năng làm bất cứ điều gì với tệp / thư mục không?

Tôi phải thừa nhận khi tôi nhập, rằng PC làm việc của tôi vẫn còn trên WinXP Pro, vì vậy những gì tôi đã nêu ở trên có thể không còn nữa - tôi vẫn không thoải mái với hộp Win 8.1 Pro mới của mình ở nhà như tôi với nhiều năm làm việc với Win XP


Không có quyền NTFS nào có thể bắt chước hành vi của một tệp bị khóa. Gần nhất sẽ làm cho tệp chỉ đọc, nhưng chúng tôi có thể chắc chắn OP biết về tùy chọn đó và đang hỏi về việc khóa tệp vì một lý do chính đáng.
Tôi nói Phục hồi Monica

-2

Trong một số tình huống tạo thư mục mới với tên của tệp có thể thực hiện công việc. (Tức là có lỗi khi cố mở tệp).


Đây thực sự là một bình luận và không phải là một câu trả lời cho câu hỏi ban đầu.
DavidPostill

Đối với tôi đó là câu trả lời trong nhiệm vụ dẫn tôi đến trang này. Bởi vì những người như bạn, ai đó sẽ không tìm thấy nó trong nhiệm vụ tương tự của họ.
noonex

3
OP đã hỏi làm thế nào để khóa một tập tin hiện có . Tạo một thư mục có cùng tên là không thể. "Thư mục con hoặc tệp xxx đã tồn tại" vì vậy câu trả lời của bạn không áp dụng được cho vấn đề trong câu hỏi.
DavidPostill

Tôi cần nhiều trường hợp "khóa tập tin hiện có" để đảm bảo rằng ứng dụng sẽ gặp lỗi khi cố gắng sửa đổi hoặc mở nó. Tôi thực sự sẽ ngừng giải thích những điều hiển nhiên bây giờ - chúc một ngày tốt lành, thưa ngài.
noonex
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.