Bagaimana cara mengunci file di Windows tanpa mengubahnya atau menggunakan alat pihak ketiga?


24

Apakah ada cara untuk mengunci file dengan alat bantu sehingga tidak dapat dihapus atau ditimpa?

Untuk pengujian skrip salinan, saya perlu lock files temporarilymemeriksa penanganan kesalahan dalam skrip. Sampai XP saya menggunakan memuat file di debug.exe untuk menguncinya.

Apakah ada cara di Windows 7 (dan yang lebih baru)?

Sunting
Saya tahu ada program yang melakukan ini. Pertanyaan saya adalah apakah ada mekanisme bawaan di windows. Terkadang saya harus memeriksa skrip pada PC dan tidak ingin menginstal program baru untuk itu.

Sunting2
Ini juga saran yang bagus: Bagaimana cara mengunci file secara sengaja? , yang, bagaimanapun, membutuhkan alat pihak ketiga atau mengubah file yang akan dikunci.


Apakah trik notepad bekerja untuk Anda?
nixda

1
@nixda No. Ini menimpa file. Saya perlu mengunci file ini tanpa mengubahnya.
marsh-goyangkan

Saya melihat. Saya menarik kembali suara dekat saya
nixda

Jawaban:


45

Saya pikir PowerShell mungkin adalah cara paling rapi untuk mencapai ini. Sesuatu seperti yang berikut 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 (This releases the current handle and unlocks the file)
$file.Close()

Saat dijeda, skrip di atas menyebabkan prompt berikut ketika mencoba membuka "myfile.txt":

masukkan deskripsi gambar di sini


2
Besar! Terima kasih! Sayangnya, saya harus mengakui bahwa saya mengembangkan PowerShell dan tidak berpikir untuk menggunakan kelas .net untuk ini. [Saya harap itu tidak akan berjalan lebih jauh :-)]
marsh-goyangkan

1
Jawaban bagus. Bagi yang penasaran, inilah tautan MSDN ke File::Openmetode yang merinci parameter panggilan (khususnya, argumen terakhir 'None',, menolak berbagi file dengan utas / proses lain - dan juga, ada ketentuan untuk mengunci file hanya untuk baca / tulis. , atau kombinasi keduanya).
Terobosan

1
@moab File ditutup dan gagang dilepaskan di bagian akhir.
Dan

2
Perhatikan $host.UI.RawUI.ReadKey(...)akan gagal di PowerShell ISE karena ReadKey tidak diterapkan untuk ISE. Solusinya adalah [void](Read-Host 'Press Enter to continue'). Tidak persis sama dengan pengguna harus menekan Enter daripada tombol apa pun. Namun, cukup baik untuk sebagian besar keperluan. Solusinya datang dari posting blog ini: jeffwouters.nl/index.php/2016/06/…
SimonTewsi

4

Karena saya tidak suka menginstal perangkat lunak yang sebenarnya tidak akan saya gunakan, saya menemukan permata ini dari VBScript:

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

Semua kredit diberikan kepada Torgeir Bakken, Anda dapat melihat pos lengkapnya di sini: http://www.pcreview.co.uk/threads/how-to-lock-files.1518829/


Bagus untuk mereka yang tidak suka PowerShell seperti solusi di atas
marsh-goyangkan

0

Bisakah Anda menandainya sebagai hanya baca? Ini secara efektif akan "mengunci" file dengan tidak membiarkannya diubah atau dihapus.

Perintah attrib.exe tersedia di baris perintah, dan akan memungkinkan Anda mengatur file atau direktori menjadi hanya-baca. Info lebih lanjut tentang perintah itu dapat ditemukan di sini

Sebaliknya, Anda dapat melakukan hal yang sama melalui GUI dengan mengklik kanan file atau direktori yang ingin Anda tandai hanya-baca, memilih properti, dan mencentang kotak Read-only. Mengklik Apply / Ok kemudian menerapkan pengaturan baru ke file atau direktori.


3
Atribut read-only hanya mencegah modifikasi tetapi tidak dari penghapusan.
ComFreek

0

Apakah tidak mungkin untuk membatasi aksesibilitas ke file dengan Tab Keamanan, ketika Anda mengklik kanan dan pergi ke Properti untuk File atau Folder?

Jika pengguna memiliki akses Admin ke PC, maka apakah ini tidak akan memungkinkannya untuk menghapus semua kemampuan orang lain untuk melakukan sesuatu dengan file / folder?

Saya harus mengakui ketika saya mengetik, bahwa PC pekerjaan saya masih di WinXP Pro, jadi apa yang saya sebutkan di atas mungkin tidak tersedia lagi - saya masih tidak nyaman dengan kotak Win 8.1 Pro baru di rumah karena saya dengan bertahun-tahun bekerja dengan Win XP


Tidak ada izin NTFS yang tersedia yang akan meniru perilaku file yang terkunci. Yang terdekat adalah membuat file hanya-baca, tetapi kita bisa memastikan OP mengetahui opsi itu dan bertanya tentang mengunci file untuk alasan yang baik.
Saya katakan Reinstate Monica

-2

Dalam beberapa skenario membuat folder baru dengan nama file dapat melakukan pekerjaan itu. (Yaitu mendapatkan kesalahan saat mencoba membuka file).


Ini benar-benar komentar dan bukan jawaban untuk pertanyaan awal.
DavidPostill

Bagi saya itu adalah jawaban dalam tugas yang membawa saya ke halaman ini. Karena orang seperti Anda, seseorang tidak akan menemukannya dalam tugas yang sama.
noonex

3
OP bertanya bagaimana cara mengunci file yang ada . Membuat folder dengan nama yang sama tidak dimungkinkan. "Sebuah subdirektori atau file xxx sudah ada" sehingga jawaban Anda tidak berlaku untuk masalah dalam pertanyaan.
DavidPostill

Saya banyak kasus "mengunci file yang ada" diperlukan untuk memastikan bahwa aplikasi akan mendapatkan kesalahan ketika mencoba untuk memodifikasi atau membukanya. Saya benar-benar akan berhenti menjelaskan hal-hal yang jelas sekarang - selamat bersenang-senang, Pak.
noonex
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.