Bagaimana cara mengunci file secara sengaja?

87

Saya ingin memegang kunci eksklusif pada file sehingga tidak dapat dibaca atau ditulis oleh orang lain. Apakah ada alat atau perintah Windows sederhana untuk melakukan ini?

Saya kira alat atau utilitas akan mengimplementasikan Fungsi Windows LockFileEx .

Catatan : Saya sudah mencoba editor teks seperti Notepad dan Notepad ++ pada file teks tetapi mereka tidak memegang kunci eksklusif.

John K.
sumber
Mengapa tidak membuatnya saja? Juga, berapa lama mereka harus memegang kunci? Haruskah mereka menunggu beberapa acara?
Mehrdad
6
Saya mempertimbangkan pemrograman satu tetapi saya pikir ada alat cepat, editor atau perintah yang bisa saya gunakan. Pada superuser tidak semua pengguna adalah programmer. bit.ly/lXT6ey saya tidak ingin pergi rute Stackoverflow dengan pertanyaan ini. Sedang menguji perilaku aplikasi saat tidak dapat mengakses file.
John K
Saya mungkin bisa membuatnya untuk Anda - biar saya tahu kapan kunci harus dilepaskan.
Mehrdad
lihat juga pertanyaan saya yang serupa superuser.com/questions/519389/flock-command-for-windows
eadmaster
Rupanya, editor seperti Notepad dan Notepad ++ bahkan tidak membiarkan file terbuka non-eksklusif.
John

Jawaban:

23

Coba Easy File Locker (freeware).

masukkan deskripsi gambar di sini

David
sumber
Tidak berfungsi pada Windows 2003
Eric Bonnot
14
Aplikasi ini tidak muncul untuk "Mengunci" file sebanyak mengubah izin pada file. Ini adalah perbedaan penting jika Anda mencoba menguji bagaimana aplikasi Anda menangani file yang dibuka / dikunci secara aktif oleh aplikasi lain. Dalam kasus saya aplikasi ini tidak berfungsi. Solusi 'notepad> file' harus menjadi jawabannya di sini.
javajavajavajavajava
1
TIDAK BEKERJA PADA Windows 10. Dan bisa dihapus. Waspadalah !!
Shahar Prish
Aplikasi ini menyebabkan banyak crash layar biru pada Windows 10. Aplikasi ini juga dirancang untuk membuat file yang tidak dapat diakses melalui perubahan izin, bukan penguncian file dengan proses. Menggunakan FileLocker dari jawaban @ RRKbabxW3 bekerja dengan sempurna.
Jordan Mack
Masuk ke layar biru kematian pada Windows 10.
Gupta
137

Solusi sederhana: Di direktori yang menarik jalankan dari cmd line:

notepad >filetolock

Sebagai stdout diarahkan kembali, itu akan tetap terkunci sampai aplikasi (notepad) dihentikan.

Perhatikan bahwa "filetolock" akan ditimpa oleh re-direct, jadi Anda mungkin tidak ingin menggunakan file yang ada yang penting. "Kunci berkas" kosong tidak akan berpengaruh pada aplikasi yang Anda coba uji, karena aplikasi tetap tidak akan dapat membukanya.

pengguna257114
sumber
38
menggunakan append redirect bukan untuk sekarang menimpa filetolock:notepad >>filetolock
eadmaster
5
solusi yang sangat berguna, tidak perlu menginstal apa pun
Aprillion
5
Ini adalah solusi yang jauh lebih baik daripada mengunduh lebih banyak freeware.
BenCr
9
Masih berfungsi di Windows 10. Harus menjadi jawaban yang diterima
SoonDead
8
Untuk beberapa alasan ini harus dijalankan di cmd.exe. Itu tidak berfungsi di PowerShell. File dibuat dan notepad dibuka tetapi Anda masih dapat menghapus file meskipun notepad sedang dibuka. Saya menguji ini pada Windows Server 2012 dan Windows 10.
Ville Salonen
32

Mengunci file tanpa alat pihak ke-3 , tidak ada perubahan pada file yang dikunci dan file bahkan tidak dapat disalin

Skrip PowerShell ini adalah kutipan dari jawaban untuk pertanyaan serupa.

Jika Anda merasa terbantu, Anda dapat memilih jawaban asli dan bukan posting ini.

#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()
rawa-goyang
sumber
2
Saya menemukan ini sebagai satu-satunya solusi yang berfungsi. Metode notepad dan EasyFileLocker tidak sepenuhnya mengunci file dan masih dapat disalin (diuji pada Windows 10)
HypeZ
Untuk penggunaan Powershell ISE [void](Read-Host 'Press Enter to continue')alih-alih $host.UI.RawUI.ReadKey(...)karena ReadKey tidak didukung di konsol semu di Powershell ISE.
SimonTewsi
26

Buka dengan MS-Excel ... aplikasi ini mengunci file saat dibuka.

Es
sumber
10
Dan saya pikir Excel berguna sebelumnya!
Scott Stafford
11

FileLocker adalah alat baris perintah freeware / open source.

Pemakaian:

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.
RRKbabxW3
sumber
1
Ini bekerja untuk saya di mana solusi lain tidak
cowlinator
2
Perhatikan bahwa pada Windows 10, itu harus dijalankan sebagai Administrator.
cowlinator
4

Saya tidak dapat menulis komentar, jadi saya menambahkan info saya dengan cara ini:

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

EDIT: ringkasan pertanyaan lain:

  • perintah jeda: ( >&2 pause ) >> file2lock.txt

  • Program MS seperti kata atau kunci excel juga (berfungsi untuk file teks)

  • Gunakan secara terprogram LockFileEx(windows API) dengan LOCKFILE_EXCLUSIVE_LOCKdanLOCKFILE_FAIL_IMMEDIATELY

Mayra Delgado
sumber
1

Inilah cara saya mereplikasi perilaku pengguna dari file yang terkunci untuk pengujian bug.

Dim s Sebagai StreamReader Baru ("C: \ test \ sampleFile.txt")

Saya menambahkan baris itu ke unit test saya untuk mengunci file dan kemudian menjalankan tes dalam mode debug untuk mereplikasi perilaku buruk ketika file yang diberikan terkunci.

Saya masih tidak tahu bagaimana pengguna bisnis saya mengunci file yang diberikan. Seperti yang Anda katakan, notepad tidak dapat menguncinya secara eksklusif.

Untungnya, mendeklarasikan streamreader mengunci file secara eksklusif kecuali Anda menentukan sebaliknya.

Kincaid
sumber
1

Saya kedua solusinya dengan marsh-goyangkan. Inilah skrip versi saya:

# 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." 
}

Anda dapat memanggilnya dari cmd seperti ini:

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

Untuk menguji Robocopy ERROR "akses ditolak" Saya baru saja menghapus akses-baca untuk pengguna. Apakah itu akan berhasil?

Untuk windows 10 ini dapat dengan mudah dilakukan dari baris perintah

chmod 'ur' lockfile

Untuk windows 7, Anda dapat menggunakan properti keamanan file explorer.

Taksi
sumber
-2

Ganti 'Your-Password-Here' dengan kata sandi Anda, dan simpan skrip ini sebagai 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*

Ketika Anda menjalankan file batch, itu akan memberi Anda prompt 'Apakah Anda yakin Anda ingin Mengunci folder (Y / N)'; ketik Y dan tekan enter dan folder akan dikunci.

Jalankan kembali file batch, dan masukkan kata sandi dan folder Anda dan semua file Anda akan dibuka lagi.

John Doe
sumber
2
Ini hanya berfungsi pada folder, dan yang lebih buruk, itu mengganti nama folder. Itu tidak akan berhasil sama sekali.
Peniru Twisty