Làm thế nào để cố tình độc quyền khóa một tập tin?


87

Tôi muốn giữ một khóa độc quyền trên một tập tin để nó không thể được đọc hoặc ghi bởi bất cứ điều gì khác. Có một công cụ Windows hoặc lệnh đơn giản để làm điều này?

Tôi cho rằng công cụ hoặc tiện ích sẽ triển khai Chức năng Windows LockFileEx .

Lưu ý : Tôi đã thử các trình soạn thảo văn bản như Notepad và Notepad ++ trên tệp văn bản nhưng chúng không giữ khóa độc quyền trên đó.


Tại sao không chỉ làm một? Ngoài ra, họ nên giữ khóa trong bao lâu? Họ có nên chờ đợi một sự kiện nào đó không?
Mehrdad

6
Tôi đã xem xét lập trình một nhưng hình dung có một công cụ, trình soạn thảo hoặc lệnh nhanh mà tôi có thể sử dụng. Trên superuser không phải tất cả người dùng là lập trình viên. bit.ly/lXT6ey Tôi không muốn đi theo con đường Stackoverflow với câu hỏi này. Đang kiểm tra hành vi của một ứng dụng khi ứng dụng không thể truy cập tệp.
John K

Tôi có thể tạo một cái cho bạn - chỉ cần tôi biết khi nào khóa sẽ được phát hành.
Mehrdad

xem thêm câu hỏi tương tự của tôi superuser.com/questions/519389/flock-command-for-windows
eadmaster

Rõ ràng, các trình soạn thảo như Notepad và Notepad ++ thậm chí không giữ tệp mở không độc quyền.
Giăng

Câu trả lời:


23

Dùng thử Easy File Locker (phần mềm miễn phí).

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


Không hoạt động trên Windows 2003
Eric Bonnot

14
Ứng dụng này không xuất hiện các tệp "Khóa" nhiều như thay đổi quyền trên tệp. Đây là một điểm khác biệt quan trọng nếu bạn đang cố kiểm tra cách ứng dụng của bạn xử lý các tệp đang được mở / khóa tích cực bởi một ứng dụng khác. Trong trường hợp của tôi, ứng dụng này đã không hoạt động. Giải pháp 'notepad> file' sẽ là câu trả lời ở đây.
javajavajavajavajava

1
KHÔNG LÀM VIỆC TRÊN Windows 10. Và có thể gỡ cài đặt. Coi chừng !!
Shahar Prish

Ứng dụng này đã gây ra nhiều sự cố màn hình xanh trên Windows 10. Ứng dụng này cũng được thiết kế để tạo các tệp không thể truy cập thông qua thay đổi quyền, không khóa tệp theo quy trình. Sử dụng FileLocker từ câu trả lời của @ RRKbabxW3 hoạt động hoàn hảo.
Jordan Mack

Chuyển sang màn hình xanh chết chóc trên Windows 10.
Gupta

137

Giải pháp đơn giản hơn: Trong thư mục quan tâm chạy từ dòng cmd:

notepad >filetolock

Khi thiết bị xuất chuẩn được định hướng lại, nó sẽ vẫn bị khóa cho đến khi ứng dụng (notepad) bị chấm dứt.

Lưu ý rằng "filetolock" sẽ được ghi đè bằng cách chuyển hướng lại, vì vậy bạn có thể không muốn sử dụng tệp hiện có có tầm quan trọng. Một "filetolock" trống rỗng sẽ không thành vấn đề đối với ứng dụng mà bạn đang thử nghiệm, vì dù sao ứng dụng sẽ không thể mở được.


38
thay vào đó hãy sử dụng chuyển hướng chắp thêm để ghi đè lên filetolock:notepad >>filetolock
eadmaster

5
giải pháp rất hữu ích, không cần phải cài đặt bất cứ điều gì
Aprillion

5
Đây là một giải pháp tốt hơn nhiều so với tải xuống nhiều phần mềm miễn phí.
BenCr

9
Vẫn hoạt động trên Windows 10. Nên là câu trả lời được chấp nhận
SoonDead

8
Vì một số lý do, điều này phải được thực thi trong cmd.exe. Nó không hoạt động trong PowerShell. Tệp được tạo và notepad được mở nhưng bạn vẫn có thể xóa tệp mặc dù notepad đang mở. Tôi đã thử nghiệm điều này trên cả Windows Server 2012 và Windows 10.
Ville Salonen

32

Khóa tệp mà không có công cụ của bên thứ 3 , không có thay đổi nào đối với tệp bị khóa và tệp thậm chí không thể được sao chép

Kịch bản PowerShell này là một trích dẫn từ một câu trả lời cho một câu hỏi tương tự.

Nếu bạn thấy nó hữu ích, bạn có thể đưa ra câu trả lời ban đầu chứ không phải bài đăng này.

#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
$file.Close()

2
tôi thấy đây là giải pháp làm việc duy nhất Cả hai phương thức notepad và EasyFileLocker đều không khóa hoàn toàn tệp và vẫn có thể được sao chép (đã thử nghiệm trên Windows 10)
HypeZ

Đối với Powershell ISE, sử dụng [void](Read-Host 'Press Enter to continue')thay vì $host.UI.RawUI.ReadKey(...)ReadKey không được hỗ trợ trong bảng điều khiển giả trong Powershell ISE.
SimonTewsi

26

Mở nó bằng MS-Excel ... ứng dụng này khóa một tệp trong khi mở.


10
Và tôi nghĩ rằng Excel là hữu ích trước đây!
Scott Stafford

11

FileLocker là một công cụ dòng lệnh miễn phí / mã nguồn mở.

Sử dụng:

FileLocker [/T LockTime] [/I] [/K] [/Q] file [file...]

/T LockTime     Time in milliseconds to lock the file
/I              Infinite locking until process is killed (default)
/K              Lock file until key is pressed
/Q              Be quiet.

1
Điều này làm việc cho tôi khi mà các giải pháp khác không làm được
chăn bò

2
Lưu ý rằng trên Windows 10, nó phải được chạy với tư cách Quản trị viên.
chăn bò

4

Tôi không thể viết bình luận, vì vậy tôi thêm thông tin của mình theo cách này:

https://stackoverflow.com/questions/5860542/how-can-i-simulation-a-locked-file-one-which-has-a-write-lock

EDIT: tóm tắt của câu hỏi khác:

  • lệnh tạm dừng: ( >&2 pause ) >> file2lock.txt

  • Các chương trình MS như khóa word hoặc excel cũng vậy (hoạt động cho các tệp văn bản)

  • Sử dụng lập trình LockFileEx(API windows) với LOCKFILE_EXCLUSIVE_LOCKLOCKFILE_FAIL_IMMEDIATELY


1

Đây là cách tôi sao chép hành vi người dùng của một tệp bị khóa để kiểm tra lỗi.

Dim s As StreamReader mới ("C: \ test \ sampleFile.txt")

Tôi thêm dòng đó vào kiểm tra đơn vị của mình để khóa tệp và sau đó chạy thử nghiệm ở chế độ gỡ lỗi để sao chép hành vi xấu khi một tệp đã cho bị khóa.

Tôi vẫn không biết người dùng doanh nghiệp của mình đang khóa tệp đã cho như thế nào. Như bạn đã nói, notepad không thể khóa độc quyền.

May mắn thay, việc khai báo một bộ đọc luồng chỉ khóa một tệp trừ khi bạn chỉ định khác.


1

Tôi thứ hai giải pháp bằng đầm lầy. Đây là phiên bản kịch bản của tôi:

# This is lock_file.ps1
[CmdletBinding()]
Param(
  [Parameter(Mandatory=$False)]
  [string]$my_file_path
)
if (!$my_file_path){
   Write-Host "Parameter my_file_path is missing, quitting."
   [Environment]::Exit(1)
}
$my_file_exists = Test-Path $my_file_path -pathType Leaf
If ($my_file_exists) {
   #Open the file in read only mode, without sharing (I.e., locked as requested)
   $my_open_file = [System.io.File]::Open($my_file_path, '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
   $my_open_file.Close()
} else {
   Write-Host "Parameter mismatch, file doesn't exist." 
}

Bạn có thể gọi nó từ cmd như thế này:

powershell -ExecutionPolicy Unrestricted -file lock_file.ps1 "path\to\file_to_lock.txt"

0

Để kiểm tra Robocopy ERROR "quyền truy cập bị từ chối" Tôi chỉ xóa quyền truy cập đọc cho người dùng. Liệu điều đó có hiệu quả?

Đối với windows 10, điều này có thể được thực hiện dễ dàng từ dòng lệnh

chmod 'ur' lockfile

Đối với windows 7, bạn có thể sử dụng thuộc tính bảo mật tệp explorer.


-2

Thay thế 'Your-Password-Here' bằng mật khẩu của bạn và lưu tập lệnh này dưới dạng Locker.bat

*cls
@ECHO OFF
title Folder Locker
if EXIST "Control Panel.{21EC2020-3AEA-1069-A2DD-08002B30309D}" goto UNLOCK
if NOT EXIST Locker goto MDLOCKER
:CONFIRM
echo Are you sure u want to Lock the folder(Y/N)
set/p "cho=>"
if %cho%==Y goto LOCK
if %cho%==y goto LOCK
if %cho%==n goto END
if %cho%==N goto END
echo Invalid choice.
goto CONFIRM
:LOCK
ren Locker "Control Panel.{21EC2020-3AEA-1069-A2DD-08002B30309D}"
attrib +h +s "Control Panel.{21EC2020-3AEA-1069-A2DD-08002B30309D}"
echo Folder locked
goto End
:UNLOCK
echo Enter password to Unlock folder
set/p "pass=>"
if NOT %pass%==Your-Password-Here goto FAIL
attrib -h -s "Control Panel.{21EC2020-3AEA-1069-A2DD-08002B30309D}"
ren "Control Panel.{21EC2020-3AEA-1069-A2DD-08002B30309D}" Locker
echo Folder Unlocked successfully
goto End
:FAIL
echo Invalid password
goto end
:MDLOCKER
md Locker
echo Locker created successfully
goto End
:End*

Khi bạn chạy tệp bó, nó sẽ hiển thị cho bạn lời nhắc 'Bạn có chắc chắn muốn khóa thư mục (Y / N)'; gõ Y và nhấn enter và thư mục sẽ bị khóa.

Chạy lại tệp bó và nhập mật khẩu của bạn và thư mục và tất cả các tệp của bạn sẽ được mở khóa lại.


2
Điều này chỉ hoạt động trên các thư mục, và tệ hơn, nó đổi tên thư mục. Điều đó sẽ không làm gì cả.
Kẻ giả mạo Twisty
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.