Bir dosyayı sadece bilerek nasıl kilitleyebilirim?


87

Bir dosya üzerinde özel bir kilit tutmak istiyorum, böylece başka hiçbir şey tarafından okunamaz veya yazılamaz. Bunu yapmak için basit bir Windows aracı veya komutu var mı?

Sanırım araç ya da yardımcı program LockFileEx Windows Fonksiyonunu uygular .

Not : Bir metin dosyasında Not Defteri ve Not Defteri ++ gibi metin editörlerini denedim, ancak üzerinde özel bir kilit tutmuyorlar.


Neden sadece bir tane yapmıyorsun? Ayrıca kilidi ne kadar tutmaları gerekir? Bir olay mı beklemeli?
Mehrdad

6
Birini programlamayı düşünmüştüm ama kullanabileceğim hızlı bir araç, editör veya komut olduğunu düşündüm. Süper kullanıcı olarak tüm kullanıcılar programcı değildir. bit.ly/lXT6ey Bu soruyla Stackoverflow yoluna gitmek istemedim. Bir uygulamanın dosyalara erişemediği zamandaki davranışını test ediyorum.
John K,

Senin için bir tane yapabilirim - sadece kilidin ne zaman açılması gerektiğini bilmiyorum.
Mehrdad


Görünüşe göre, Notepad ve Notepad ++ gibi editörler, dosyayı münhasır olmayan bir şekilde açık tutmuyor.
John,

Yanıtlar:


23

Kolay Dosya Locker'ı (ücretsiz) deneyin .

görüntü tanımını buraya girin


Windows 2003'te çalışmıyor
Eric Bonnot

14
Bu uygulama, dosya iznini değiştirmek kadar "Kilitleme" görünmüyor. Uygulamanızın başka bir uygulama tarafından aktif olarak nasıl açıldığını / kilitlendiğini nasıl işlediğini test etmeye çalışıyorsanız, bu önemli bir ayrımdır. Benim durumumda bu uygulama işe yaramadı. 'Notepad> file' çözümü buradaki cevap olmalıdır.
javajavajavajavajava

1
Windows 10'DA ÇALIŞMAYIN. Ve kaldırılamaz. Dikkat!!
Shahar Prişt,

Bu uygulama, Windows 10'da birden fazla mavi ekran çökmesine neden oldu. Bu uygulama aynı zamanda işlemlerin dosya kilitlemesi değil, izin değişiklikleriyle erişilemeyen dosyalar oluşturmak için tasarlanmıştır. @ RRKbabxW3'ün yanıtından FileLocker'ı kullanmak mükemmel çalıştı.
Jordan Mack,

Windows 10'da ölüm mavi ekranına
gider

137

Basit çözüm: İlgilenilen dizinde cmd çizgisinden çalıştırın:

notepad >filetolock

Yeniden yönlendirilen stdout, uygulama (not defteri) sonlandırılıncaya kadar kilitli kalır.

"Filetolock" öğesinin yeniden yönlendirme üzerine yazılacağını, bu nedenle büyük olasılıkla herhangi bir önemi olan mevcut bir dosyayı kullanmak istemediğinizi unutmayın. Boş bir "filetolock" test etmeye çalıştığınız uygulama için farketmez, çünkü uygulama zaten onu açamaz.


38
filetolock'un üzerine yazmak yerine bunun yerine append redirect komutunu kullanın:notepad >>filetolock
eadmaster

5
son derece kullanışlı bir çözüm, hiçbir şey yüklemeye gerek yok
Aprillion

5
Bu, daha fazla ücretsiz indirme yerine daha iyi bir çözümdür.
BenCr

9
Hala Windows 10'da çalışıyor. Kabul edilen cevap olmalı
SoonDead 14:15

8
Nedense bu cmd.exe içinde yürütülmek zorunda. PowerShell'de çalışmıyor. Dosya oluşturulur ve not defteri açılır, ancak not defteri açık olmasına rağmen dosyayı silebilirsiniz. Bunu hem Windows Server 2012 hem de Windows 10'da test ettim.
Ville Salonen

32

3. parti araçları olmadan bir dosyayı kilitleyin , kilitlenmekte olan dosyada hiçbir değişiklik olmaz ve dosya kopyalanamaz

Bu PowerShell betiği, benzer bir sorunun cevabından alıntıdır.

Yararlı bulursanız , bu cevabı değil orijinal cevabı silebilirsiniz .

#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
Bunu tek çalışan çözüm olarak buldum. Not defteri ve EasyFileLocker yöntemleri Hem tamamen dosyayı kilitlemez ve hala kopyalanan (Windows 10'a üzerinde test) olabilir
HypeZ

Powershell ISE için, Powershell ISE'deki sahte konsolda ReadKey [void](Read-Host 'Press Enter to continue')yerine kullanılmadığından kullanın $host.UI.RawUI.ReadKey(...).
SimonTewsi

26

MS-Excel ile açın ... Bu uygulama açıkken bir dosyayı kilitler.


10
Excel'in daha önce faydalı olduğunu düşünmüştüm!
Scott Stafford

11

FileLocker , ücretsiz / açık kaynaklı bir komut satırı aracıdır.

Kullanımı:

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
Bu benim için diğer çözümlerin olmadığı yerlerde çalıştı
cowlinator

2
Windows 10'da Yönetici olarak çalıştırılması gerektiğini unutmayın.
Cowlinator,


1

Burada hata testi için kilitli bir dosyanın kullanıcı davranışını nasıl çoğaltacağım.

Dim olarak Yeni StreamReader ("C: \ test \ sampleFile.txt")

Dosyayı kilitlemek için birim testime bu satırı ekliyorum ve ardından belirli bir dosya kilitlendiğinde hatalı davranışı çoğaltmak için testi hata ayıklama modunda çalıştırıyorum.

İşletme kullanıcılarımın verilen dosyayı nasıl kilitlediğini hala bilmiyorum. Dediğiniz gibi, not defteri yalnızca kilitleyemez.

Neyse ki, aksini belirtmediğiniz sürece bir aktarıcının bildirilmesi yalnızca bir dosyayı kilitler.


1

Ben çözüm bataklık kıpırdatmak tarafından ikinci. İşte betiğin sürümü:

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

Cmd'den şöyle diyebilirsiniz:

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

0

Robocopy ERROR sınaması için "erişim reddedildi" Kullanıcı için okuma erişimini kaldırdım. Işe yarar mı?

Windows 10 için bu kolayca komut satırından yapılabilir.

chmod 'ur' kilit dosyası

Windows 7 için, dosya gezgini güvenlik özelliklerini kullanabilirsiniz.


-2

'Şifrenizi-İşte' şifrenizi ile değiştirin ve bu betiği Locker.bat olarak kaydedin.

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

Toplu iş dosyasını çalıştırdığınızda, size 'Klasörü kilitlemek istediğinizden emin misiniz (E / H)' istemi; Y yazın ve enter tuşuna basın, klasör kilitlenir.

Toplu iş dosyasını tekrar çalıştırın, şifrenizi ve klasörü girin; tüm dosyalarınız tekrar açılacaktır.


2
Bu sadece klasörler üzerinde çalışır ve daha kötüsü klasörü yeniden adlandırır . Bu hiç işe yaramaz.
Bükülen Taklitçi
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.