windows 7 – どのように意図的に排他的にファイルをロックするには?

windows-7 windows-server-2008

ファイルに排他的なロックをかけて、他の人が読み書きできないようにしたいです。これを行うための簡単なWindowsツールまたはコマンドはありますか?

ツールやユーティリティは、LockFileEx Windows 関数を実装していると思います

メモ帳やメモ帳++などのテキストエディタをテキストファイル上で試してみましたが、排他的なロックはかかっていません

  101  John K  2011-06-09


ベストアンサー

Easy File Locker (フリーウェア) を試してみてください

enter image description here

22  David  2011-10-13


よりシンプルなソリューション。興味のあるディレクトリでcmdラインから実行します

notepad >filetolock

リダイレクトされた標準出力として、アプリケーション(メモ帳)が終了するまでロックされたままになります

filetolock “はリダイレクトによって上書きされるので、おそらく既存の重要なファイルを使用したくないことに注意してください。空の “filetolock “は、テストしようとしているアプリケーションにとっては重要ではありません

157  user257114  2013-09-24


サードパーティツールなしでファイルをロックし、ロックされているファイルに変更はなく、ファイルはコピーすることさえできません

このPowerShellスクリプトは、似たような質問に対する回答からの引用です

役に立つと思ったら、元の回答ではなく、この投稿をupvoteすることができます

#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()

39  marsh-wiggle  2014-12-28


MS-Excelで開く…このアプリはファイルを開いたままロックします

29  Ice  2011-06-10


FileLocker はフリーウェア/オープンソースのコマンドラインツールです

Usage:

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.

14  RRKbabxW3  2014-08-13


コメントが書けないので、このように情報を追加しています

Attention Required! | Cloudflare

EDIT: 他の質問のまとめ

  • 一時停止コマンドを実行します。( >&2 pause ) >> file2lock.txt

  • ワードやエクセルのようなMSプログラムもロックします(テキストファイルのために動作します)

  • プログラム的にLockFileEx (windows API)をLOCKFILE_EXCLUSIVE_LOCK, LOCKFILE_FAIL_IMMEDIATELYで使用する

4  Mayra Delgado  2016-09-14


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"

3  Ciove  2019-03-12


ここでは、バグテストのためにロックされたファイルのユーザの動作を複製しています

Dim s As New StreamReader(“C:\testsampleFile.txt”)

私はこの行をユニットテストに追加してファイルをロックし、与えられたファイルがロックされたときに悪い動作を再現するためにデバッグモードでテストを実行しています

私はまだ私のビジネスユーザーが与えられたファイルをロックする方法がわかりません。あなたが言ったように、メモ帳は排他的にそれをロックすることはできません

幸いにも、ストリームリーダを宣言することで、特に指定しない限りファイルを排他的にロックすることができます

1  kincaid  2015-11-10


Robocopy ERROR “access denied “をテストするために、ユーザーのリードアクセスを削除しました。これでうまくいくのでしょうか?

Windows 10の場合は、コマンドラインから簡単に行うことができます

chmod ‘u-r’ lockfile

windows 7の場合は、ファイルエクスプローラーのセキュリティプロパティを使用することができます

0  Cab  2019-09-14


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*

バッチファイルを実行すると、’Are you sure u want to Lock the folder(Y/N)’プロンプトが表示されます

バッチファイルを再度実行し、パスワードとフォルダを入力すると、すべてのファイルが再びロック解除されます

-2  John Doe  2017-12-11


タイトルとURLをコピーしました