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.


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


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


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.


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()

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.


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.

1
Ini bekerja untuk saya di mana solusi lain tidak
cowlinator

2
Perhatikan bahwa pada Windows 10, itu harus dijalankan sebagai Administrator.
cowlinator


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.


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"

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.


-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.


2
Ini hanya berfungsi pada folder, dan yang lebih buruk, itu mengganti nama folder. Itu tidak akan berhasil sama sekali.
Peniru Twisty
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.