Windowsでファイルを変更したり、サードパーティのツールを使用せずにロックする方法は?


24

オンボードツールでファイルをロックして、削除または上書きできないようにする方法はありますか?

コピースクリプトのテストでlock files temporarilyは、スクリプトのエラー処理を確認する必要があります。XPまでは、debug.exeでファイルをロードしてロックしていました。

Windows 7(およびそれ以降)に方法はありますか?

編集
これを行うプログラムがあることを知っています。私の質問は、Windowsに組み込みのメカニズムがあるかどうかです。時々、PC上のスクリプトをチェックする必要があり、そのための新しいプログラムをインストールしたくないことがあります。

Edit2
ここにも良い提案があります:ファイルを意図的に排他的にロックする方法は?、ただし、サードパーティのツールを必要とするか、ロックするファイルを変更します。



1
@nixdaいいえ。ファイルを上書きします。現在のファイルを変更せずにロックする必要があります。
マーシュウィグル14

そうですか。私は私の近くの投票撤回
nixda

回答:


45

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 (This releases the current handle and unlocks the file)
$file.Close()

一時停止中に、上記のスクリプトにより、「myfile.txt」を開こうとすると、次のプロンプトが表示されます。

ここに画像の説明を入力してください


2
すばらしいです!ありがとう!残念なことに、私はpowershellで開発していることを告白する必要があり、これに.netクラスを使用することを考えていませんでした。[これ以上進めないことを願っています:
marsh-wiggle

1
いい答えだ。好奇心のために、ここにあるのMSDNリンクFile::Openメソッド呼び出しのパラメータを詳述するが(具体的には、最後の引数は、'None'ファイル共有低下、他のスレッド/プロセスとを-と同様に、規定は唯一の読み取り/書き込みのためにファイルをロックするために存在します、またはその組み合わせ)。
ブレークスルー14

1
@moabファイルは閉じられ、最後にハンドルが解放されます。
ダン14

2
注意$host.UI.RawUI.ReadKey(...)ReadKeyは、ISEのために実装されていないとのPowerShell ISEに失敗します。回避策は[void](Read-Host 'Press Enter to continue')です。ユーザーがキーではなくEnterキーを押す必要があるのとまったく同じではありません。ただし、ほとんどの目的には十分です。この問題を回避するには、このブログの記事から来た:jeffwouters.nl/index.php/2016/06/...
SimonTewsi

4

実際に使用しないソフトウェアをインストールするのは好きではないので、VBScriptのこの宝石を見つけました。

Const ForAppending = 8
Set oFSO = CreateObject("Scripting.FileSystemObject")

Set f = oFSO.OpenTextFile("C:\Tst\My2.txt", ForAppending, True)

MsgBox "Press OK to unlock the file(s)"

すべてのクレジットはTorgeir Bakkenに送られます。完全な投稿はこちらでご覧いただけます:http : //www.pcreview.co.uk/threads/how-to-lock-files.1518829/


上記の溶液のようなPowerShellを好きではない人のためニース
マーシュ・ウィグル

0

読み取り専用としてマークできませんか?これは、ファイルの変更または削除を許可しないことにより、ファイルを効果的に「ロック」します。

attrib.exeコマンドはコマンドラインで使用でき、ファイルまたはディレクトリを読み取り専用に設定できます。このコマンドの詳細については、こちらをご覧ください

逆に、GUIで同じことを行うには、読み取り専用としてマークするファイルまたはディレクトリを右クリックし、プロパティを選択して、読み取り専用ボックスをオンにします。[適用/ OK]をクリックすると、新しい設定がファイルまたはディレクトリに適用されます。


3
読み取り専用属性は変更のみを防止し、削除は防止しません。
ComFreek 14

0

右クリックしてファイルまたはフォルダのプロパティに移動すると、[セキュリティ]タブでファイルへのアクセスを制限することはできませんか?

ユーザーがPCの管理者アクセス権を持っている場合、ファイル/フォルダーで何かを行う他のすべての機能を削除することはできませんか?

入力中に、私の仕事用PCはまだWinXP Proにあることを認めなければならないので、上記で説明したものはもう利用できないかもしれません-私はまだ自宅の新しいWin 8.1 Proボックスに慣れていませんWindows XPでの長年の仕事


使用可能なNTFSアクセス許可はいずれも、ロックされたファイルの動作を模倣しません。最も近いのはファイルを読み取り専用にすることですが、OPがそのオプションを認識しており、正当な理由でファイルをロックすることを確認していることを確認できます。
私は、

-2

いくつかのシナリオでは、ファイルの名前で新しいフォルダーを作成すると、ジョブが実行されることがあります。(つまり、ファイルを開こうとするとエラーが発生します)。


これは実際にはコメントであり、元の質問に対する答えではありません
DavidPostill

私にとって、このページに導かれたのはタスクの答えでした。あなたのような人のために、誰かが同じようなタスクでそれを見つけられないでしょう。
noonex

3
OPは、既存のファイルをロックする方法を尋ねていました。同じ名前のフォルダを作成することはできません。「サブディレクトリまたはファイルxxxは既に存在します」ので、あなたの答えは質問の問題に当てはまりません。
DavidPostill

多くの場合、「既存のファイルをロックする」必要があるのは、アプリケーションがエラーを修正または開くときにエラーが発生することを確認するためです。明らかなことを今説明するのをやめます-良い一日を過ごしてください、先生。
noonex
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.