¿Cómo bloquear a propósito exclusivamente un archivo?


87

Quiero mantener un bloqueo exclusivo en un archivo para que nada más pueda leerlo o escribirlo. ¿Existe una herramienta o comando simple de Windows para hacer esto?

Supongo que la herramienta o utilidad implementaría la función de Windows LockFileEx .

Nota : He probado editores de texto como Notepad y Notepad ++ en un archivo de texto, pero no tienen un bloqueo exclusivo.


¿Por qué no solo hacer uno? Además, ¿cuánto tiempo deben mantener la cerradura? ¿Deberían esperar algún evento?
Mehrdad

66
Pensé en programar uno pero pensé que hay una herramienta rápida, editor o comando que puedo usar. En el superusuario, no todos los usuarios son programadores. bit.ly/lXT6ey No quería ir a la ruta de Stackoverflow con esta pregunta. Estoy probando el comportamiento de una aplicación cuando no puede acceder a los archivos.
John K

Es posible que pueda hacerte uno, solo déjame saber cuándo se debe liberar el bloqueo.
Mehrdad


Aparentemente, editores como Notepad y Notepad ++ ni siquiera mantienen el archivo abierto de forma no exclusiva.
John

Respuestas:


23

Prueba Easy File Locker (freeware).

ingrese la descripción de la imagen aquí


No funciona en Windows 2003
Eric Bonnot

14
Esta aplicación no parece "bloquear" los archivos, sino cambiar el permiso en el archivo. Esta es una distinción importante si está intentando probar cómo su aplicación maneja los archivos que otra aplicación abre / bloquea activamente. En mi caso, esta aplicación no funcionó. La solución 'notepad> file' debería ser la respuesta aquí.
javajavajavajavajava

1
NO FUNCIONA EN Windows 10. Y desinstalable. ¡¡Tener cuidado!!
Shahar Prish

Esta aplicación causó múltiples bloqueos de pantalla azul en Windows 10. Esta aplicación también está diseñada para crear archivos inaccesibles a través de cambios de permisos, no bloqueo de archivos por procesos. Usar FileLocker de la respuesta de @ RRKbabxW3 funcionó perfectamente.
Jordan Mack

Va a la pantalla azul de la muerte en Windows 10.
Gupta

137

Solución más simple: en el directorio de interés, ejecute desde la línea cmd:

notepad >filetolock

Como stdout redirigido, permanecerá bloqueado hasta que finalice la aplicación (bloc de notas).

Tenga en cuenta que el "filetolock" será sobrescrito por el redireccionamiento, por lo que probablemente no desee utilizar un archivo existente de importancia. Un "filetolock" vacío no le importará a la aplicación que está intentando probar, ya que la aplicación no podrá abrirlo de todos modos.


38
use en su lugar agregar redirigir para sobrescribir ahora el bloqueo de archivos:notepad >>filetolock
eadmaster

55
solución muy útil, no es necesario instalar nada
Aprillion

55
Esta es una solución mucho mejor que descargar más freeware.
BenCr

99
Todavía funciona en Windows 10. Debería ser la respuesta aceptada
SoonDead

8
Por alguna razón, esto debe ejecutarse en cmd.exe. No funciona en PowerShell. Se crea el archivo y se abre el bloc de notas, pero aún puede eliminar el archivo a pesar de que el bloc de notas esté abierto. Probé esto en Windows Server 2012 y Windows 10.
Ville Salonen

32

Bloquee un archivo sin herramientas de terceros , no hay cambios en el archivo que se está bloqueando y el archivo ni siquiera se puede copiar

Este script de PowerShell es una cita de una respuesta a una pregunta similar.

Si lo encuentra útil, puede votar la respuesta original y no esta publicación.

#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
Encontré esto como la única solución de trabajo. Los métodos de bloc de notas y EasyFileLocker no bloquean totalmente el archivo y aún se pueden copiar (probar en Windows 10)
HypeZ

Para el uso de Powershell ISE en [void](Read-Host 'Press Enter to continue')lugar de $host.UI.RawUI.ReadKey(...)como ReadKey no es compatible con la pseudo-consola en Powershell ISE.
SimonTewsi

26

Ábralo con MS-Excel ... esta aplicación bloquea un archivo mientras está abierto.


10
¡Y pensé que Excel era útil antes!
Scott Stafford, el

11

FileLocker es una herramienta de línea de comandos de código abierto / freeware.

Uso:

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
Esto funcionó para mí donde otras soluciones no funcionaban
cowlinator el

2
Tenga en cuenta que en Windows 10, debe ejecutarse como administrador.
cowlinator


1

Así es como reproduzco el comportamiento del usuario de un archivo bloqueado para la prueba de errores.

Dim s As New StreamReader ("C: \ test \ sampleFile.txt")

Agrego esa línea a mi prueba unitaria para bloquear el archivo y luego ejecuto la prueba en modo de depuración para replicar el mal comportamiento cuando un archivo determinado está bloqueado.

Todavía no sé cómo los usuarios de mi empresa están bloqueando el archivo dado. Como dijiste, el bloc de notas no puede bloquearlo exclusivamente.

Afortunadamente, la declaración de un lector de secuencias bloquea un archivo exclusivamente a menos que especifique lo contrario.


1

Secundo la solución por marsh-wiggle. Aquí está mi versión del guión:

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

Puedes llamarlo desde cmd así:

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

0

Para probar ERROR de Robocopy "acceso denegado", acabo de eliminar el acceso de lectura para el usuario. Funcionaría eso?

Para Windows 10, esto se puede hacer fácilmente desde la línea de comando

chmod 'ur' lockfile

Para Windows 7, puede usar las propiedades de seguridad del explorador de archivos.


-2

Reemplace 'Your-Password-Here' con su contraseña y guarde este script como 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*

Cuando ejecute el archivo por lotes, se le presentará el mensaje '¿Está seguro de que desea bloquear la carpeta (S / N)? escriba Y y presione enter y la carpeta se bloqueará.

Vuelva a ejecutar el archivo por lotes e ingrese su contraseña y la carpeta y todos sus archivos se desbloquearán nuevamente.


2
Esto solo funciona en carpetas y, lo que es peor, cambia el nombre de la carpeta. Eso no servirá en absoluto.
Imitador de Twisty
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.