ファイルをロックして、1 つのプログラムだけが書き込みできるようにしますか?

ファイルをロックして、1 つのプログラムだけが書き込みできるようにしますか?

Windows 7では、1つのユーザーだけが書き込みできるようにファイルをロックすることは可能ですか?プログラム? 誰でも読み取りまたはコピーのアクセス権を持つことができますが、書き込み/移動/削除は 1 つのプログラムによってのみ実行される必要があります。

答え1

典型的な答え:いいえ。Windows NTのセキュリティはSID(ユーザー、グループ、特別なグループなど)に適用されます。プログラムはない 1 2には使用できる固有のSIDがあり、できない任意の ACL にプロセス名またはパスを追加します。

同じユーザーによって実行されるすべてのプログラムは、そのユーザーとユーザーが属するすべてのグループの同じ SID を持ちます (ログイン SID はセッションごとに異なりますが、セッション内では同じままです)。

しかし、別のユーザーアカウントを作成するそのプログラム専用にアカウントを作成し、「別のユーザーとして実行...」を使用してプログラムを起動します。アカウントは「ようこそ」画面から簡単に非表示にできます。

runas /user:myapp /savecred /noprofile "myapp.exe"

一部のプログラム(通常はウイルス)そしてウイルス対策ツールは、Windows カーネル関数をフックして、特定のプロセス以外による特定のファイルまたはレジストリ値の変更を禁止するシステム ドライバーをインストールします (たとえば、ウイルス対策の無効化は独自の GUI からのみ許可するなど)。これには多くの作業 (ドライバーの作成、ユーザーのシステムがクラッシュしないことの確認、プロセスを検証する方法の検討など) が必要であり、以降の Windows バージョン (Vista 以降) では確実に動作しない可能性があります。


1ウィンドウサービスWindows Vista および Server 2008 では、一意の SID を取得できます。(ただし、対話形式で実行する機能も失われているため、これは役に立ちません。)

2 Windows 8のMetroアプリには独自のSIDがあり、アプリコンテナのSID

答え2

これはファイルに対する標準的なロックです。通常、これはプログラムでファイルを開くことによって行われます。プログラムが明示的に共有可能であると示していない限り、ファイルはロックされます。

関連情報