의도적으로 파일을 독점적으로 잠그는 방법?


83

다른 사람이 읽거나 쓸 수 없도록 파일에 독점 잠금을 유지하고 싶습니다. 이를위한 간단한 Windows 도구 나 명령이 있습니까?

도구 또는 유틸리티가 LockFileEx Windows 기능을 구현한다고 가정합니다 .

참고 : 텍스트 파일에서 메모장 및 메모장 ++와 같은 텍스트 편집기를 사용해 보았지만 독점 잠금 장치는 없습니다.


왜 하나만 만드시겠습니까? 또한 자물쇠를 얼마나 오래 잡아야합니까? 그들은 이벤트를 기다려야합니까?
Mehrdad

5
나는 프로그래밍 하나를 고려했지만 사용할 수있는 빠른 도구, 편집기 또는 명령이 있다고 생각했습니다. 수퍼 유저에서 모든 사용자가 프로그래머는 아닙니다. bit.ly/lXT6ey 이 질문으로 Stackoverflow 경로를 가고 싶지 않았습니다. 파일에 액세스 할 수 없을 때 앱의 동작을 테스트하고 있습니다.
John K

나는 당신을 위해 하나를 만들 수있을 것입니다.
Mehrdad

내 비슷한 질문을 참조하십시오 superuser.com/questions/519389/flock-command-for-windows
eadmaster

분명히 메모장 및 메모장 ++와 같은 편집기는 파일을 독점적으로 열어 두지 않습니다.
John

답변:


22

시도 간편한 파일 사물함 (프리웨어).

여기에 이미지 설명을 입력하십시오


Windows 2003에서 작동하지 않음
Eric Bonnot

14
이 응용 프로그램은 파일에 대한 권한을 변경하는 것만 큼 파일을 "잠그는"것처럼 보이지 않습니다. 응용 프로그램이 다른 응용 프로그램에서 활발하게 열거 나 잠근 파일을 처리하는 방법을 테스트하려는 경우 중요한 차이점입니다. 제 경우에는이 응용 프로그램이 작동하지 않았습니다. '메모장> 파일'솔루션이 여기에 답이되어야합니다.
javajavajavajavajava

1
Windows 10에서는 작동하지 않습니다. 제거 할 수 있습니다. 조심해 !!
Shahar Prish

이 앱은 Windows 10에서 여러 개의 블루 스크린 충돌을 일으켰습니다.이 앱은 프로세스의 파일 잠금이 아니라 권한 변경을 통해 액세스 할 수없는 파일을 만들도록 설계되었습니다. @ RRKbabxW3의 답변에서 FileLocker를 사용하면 완벽하게 작동했습니다.
Jordan Mack

132

더 간단한 해결책 : 관심있는 디렉토리에서 cmd 행에서 실행하십시오.

notepad >filetolock

리디렉션 된 stdout으로 응용 프로그램 (메모장)이 종료 될 때까지 잠겨 있습니다.

"filetolock"은 경로 재 지정으로 겹쳐 쓰므로 중요한 기존 파일을 사용하고 싶지 않을 수 있습니다. 비어있는 "filetolock"은 테스트하려는 응용 프로그램에 중요하지 않습니다. 응용 프로그램은 어쨌든 열 수 없습니다.


34
filetolock을 덮어 쓰려면 append redirect를 대신 사용하십시오.notepad >>filetolock
eadmaster

4
매우 유용한 솔루션, 아무것도 설치할 필요 없음
Aprillion

4
더 많은 프리웨어를 다운로드하는 것보다 훨씬 나은 솔루션입니다.
BenCr

7
여전히 Windows 10에서 작동합니다. 허용되는 답변
이어야 함

6
어떤 이유로 cmd.exe에서 실행해야합니다. PowerShell에서는 작동하지 않습니다. 파일이 만들어지고 메모장이 열리지 만 메모장이 열려 있어도 파일을 삭제할 수 있습니다. 나는 이것을 Windows Server 2012와 Windows 10에서 모두 테스트했습니다.
Ville Salonen

32

파일 잠금 타사 도구없이를 , 파일에 대한 변경 사항은 고정되고 있지 및 파일도 복사 할 수 없습니다

이 PowerShell 스크립트는 비슷한 질문에 대한 답변을 인용 한 것입니다.

도움이된다면 이 게시물이 아닌 원래 답변을 찬성 할 수 있습니다 .

#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
나는 이것이 유일한 해결책이라고 생각했다. notepad 및 EasyFileLocker 메서드는 파일을 완전히 잠그지 않고 복사 할 수 있습니다 (Windows 10에서 테스트 됨)
HypeZ

Powershell ISE 의 의사 콘솔에서는 ReadKey [void](Read-Host 'Press Enter to continue')대신 Powershell ISE를 사용할 수 $host.UI.RawUI.ReadKey(...)없습니다.
SimonTewsi

26

MS-Excel로 파일을 엽니 다 ...이 앱은 파일을 여는 동안 파일을 잠급니다.


10
그리고 Excel이 이전에 유용하다고 생각했습니다!
Scott Stafford

11

FileLocker 는 프리웨어 / 오픈 소스 명령 줄 도구입니다.

용법:

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
다른 솔루션은하지 않았다 곳은 나를 위해 일한
cowlinator

2
Windows 10에서는 관리자 권한으로 실행해야합니다.
cowlinator

4

댓글을 작성할 수 없으므로 다음과 같이 내 정보를 추가하십시오.

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

편집 : 다른 질문 요약 :

  • 일시 정지 명령 : ( >&2 pause ) >> file2lock.txt

  • 단어 또는 엑셀 잠금과 같은 MS 프로그램도 (텍스트 파일에서 작동)

  • , 프로그램 사용 LockFileEx과 함께 (윈도우 API)를 LOCKFILE_EXCLUSIVE_LOCK하고LOCKFILE_FAIL_IMMEDIATELY


1

다음은 버그 테스트를 위해 잠긴 파일의 사용자 동작을 복제하는 방법입니다.

새 StreamReader로 흐리게 표시 ( "C : \ test \ sampleFile.txt")

해당 줄을 단위 테스트에 추가하여 파일을 잠근 다음 디버그 모드에서 테스트를 실행하여 지정된 파일이 잠겨있을 때 잘못된 동작을 복제합니다.

여전히 비즈니스 사용자가 주어진 파일을 어떻게 잠그고 있는지 알 수 없습니다. 말했듯이 메모장은 독점적으로 잠글 수 없습니다.

다행히 스트림 리더를 선언하면 달리 지정하지 않는 한 파일을 독점적으로 잠급니다.


1

marsh-wiggle으로 솔루션을 두 번째로 사용합니다. 내 스크립트 버전은 다음과 같습니다.

# 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에서 호출 할 수 있습니다.

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

-1

'Your-Password-Here'를 비밀번호로 바꾸고이 스크립트를 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*

배치 파일을 실행하면 '폴더를 잠그시겠습니까 (Y / N)'프롬프트가 표시됩니다. Y를 입력하고 Enter를 누르면 폴더가 잠 깁니다.

배치 파일을 다시 실행하고 비밀번호와 폴더를 입력하면 모든 파일이 다시 잠금 해제됩니다.


이것은 폴더에서만 작동하며 폴더 이름을 바꿉니다 . 전혀하지 않습니다.
Twisty Impersonator
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.