Wie kann man eine Datei gezielt ausschließlich sperren?

Ich möchte eine exklusive Sperre für eine Datei beibehalten, damit sie von nichts anderem gelesen oder geschrieben werden kann. Gibt es dazu ein einfaches Windows-Tool oder einen einfachen Befehl?

Ich nehme an, das Tool oder Dienstprogramm würde die Windows-Funktion LockFileEx implementieren.

Hinweis: Ich habe Texteditoren wie Notepad und Notepad++ für eine Textdatei ausprobiert, aber sie haben keine exklusive Sperre.

Author: Jens Erat, 2011-06-09

10 answers

Versuchen Einfache Datei Locker - (freeware).

geben Sie hier die Bildbeschreibung ein

 22
Author: David,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2011-10-13 04:58:45

Einfachere Lösung: Führen Sie im interessierenden Verzeichnis die cmd-Zeile aus:

notepad >filetolock

Als Umlenkung von stdout, es wird bleiben gesperrt, bis Sie die Anwendung (Editor) beendet wird.

Beachten Sie, dass der "Filetolock" vom Re-Direct überschrieben wird, sodass Sie wahrscheinlich keine vorhandene Datei von Bedeutung verwenden möchten. Ein leerer "Filetolock" spielt für die Anwendung, die Sie testen möchten, keine Rolle, da die App sie sowieso nicht öffnen kann.

 159
Author: user257114,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2013-10-18 13:15:29

Sperren einer Datei ohne Tools von Drittanbietern, keine Änderungen an der Datei gesperrt und Datei kann nicht einmal kopiert werden

Dieses PowerShell-Skript ist ein Zitat aus einer Antwort auf eine ähnliche Frage.

Wenn Sie es nützlich finden, können Sie upvote in der ursprünglichen Antwort und nicht dieses posting.

#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()
 42
Author: marsh-wiggle,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2018-02-19 14:57:00

Öffnen Sie es mit MS-Excel... diese App sperrt eine Datei beim Öffnen.

 29
Author: Ice,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2011-06-10 08:11:07

FileLocker ist ein freeware - /open-source-Befehlszeilen-tool.

Verwendung:

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.
 15
Author: RRKbabxW3,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2014-08-13 15:59:40

Ich kann keine Kommentare schreiben, also füge ich meine Informationen so hinzu:

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

EDIT: Zusammenfassung der anderen Frage:

  • Pause-Befehl: ( >&2 pause ) >> file2lock.txt

  • MS-Programme wie Word oder Excel sperren auch (funktioniert für Textdateien)

  • Verwenden Sie programmatisch LockFileEx (windows API) mit LOCKFILE_EXCLUSIVE_LOCK und LOCKFILE_FAIL_IMMEDIATELY

 4
Author: Mayra Delgado,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2017-05-23 12:41:42

Ich habe die Lösung durch Marsh-Wiggle gefunden. Hier ist meine version des Skripts:

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

Sie können es von cmd wie folgt aufrufen:

powershell -ExecutionPolicy Unrestricted -file lock_file.ps1 "path\to\file_to_lock.txt"
 3
Author: Ciove,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2019-03-12 10:31:41

So repliziere ich das Benutzerverhalten einer gesperrten Datei für Fehlertests.

Dim s Als neuer StreamReader("C:\test\sampleFile.txt")

Ich füge diese Zeile meinem Komponententest hinzu, um die Datei zu sperren, und führe dann den Test im Debug-Modus aus, um schlechtes Verhalten zu replizieren, wenn eine bestimmte Datei gesperrt ist.

Ich weiß immer noch nicht, wie meine Geschäftsbenutzer die angegebene Datei sperren. Wie Sie sagten, kann Notepad es nicht ausschließlich sperren.

Glücklicherweise sperrt das Deklarieren eines Streamreaders eine Datei. sofern Sie nicht anders angeben.

 1
Author: kincaid,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2015-11-10 19:29:14

Zum Testen des Robocopy-FEHLERS "Zugriff verweigert" habe ich gerade den Lesezugriff für den Benutzer entfernt. Würde das funktionieren?

Für Windows 10 kann dies problemlos über die Befehlszeile

Chmod u-r' lockfile -

Für Windows 7 können Sie die Sicherheitseigenschaften des Datei-Explorers verwenden.

 0
Author: Cab,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2019-09-14 09:00:10

Ersetzen Sie 'Your-Password-Here' durch Ihr Passwort und speichern Sie dieses Skript als Schließfach.Fledermaus -

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

Wenn Sie die Batchdatei ausführen, wird die Eingabeaufforderung "Sind Sie sicher, dass Sie den Ordner sperren möchten(Y/N)" angezeigt.Geben Sie Y ein und drücken Sie die Eingabetaste, und der Ordner wird gesperrt.

Führen Sie die Batch-Datei erneut, und geben Sie Ihr Passwort und den Ordner und alle Ihre Dateien werden wieder entsperrt werden.

 -2
Author: John Doe,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2017-12-11 16:30:48