質問

次の属性を持つファイルに書き込もうとしています-非表示と読み取り専用。私のプロセスはそれに書き込むことができるはずですが、他のプロセスには読み取り専用アクセスがあります。

私が従う手順は次のとおりです。

  1. ファイルが存在するかどうかを確認します
  2. ファイルの既存の属性、つまり非表示および読み取り専用を削除します
  3. ファイルへの書き込みを終了します
  4. 属性(非表示および読み取り専用)をファイルに適用し直します

    これは、ファイル属性を使用して隠しファイルに書き込むための推奨される方法ではないことを知っています。私のタスクを達成するためのより良い方法はありますか?

    よろしくお願いします。

役に立ちましたか?

解決

はい、アプリケーションを特別なアカウントになりすますようにします。そのファイルのそのアカウントにファイル書き込み権限を付与し、他のすべてのアカウントへの読み取りアクセス権を付与します。

別のユーザーのコンテキストで実行する最も簡単な方法は、Shiftキーを押しながらexeファイルを右クリックし、[別のユーザーとして実行]を選択することです。

Windowsサービスでは、サービスのプロパティから実行中のアカウントを変更します。同じことがWindowsのスケジュールされたタスクにも当てはまります。

「プロセスの途中で」実行中のアカウントを変更するには、さらに作業を行う必要があります。 http://www.codeproject.com/Articles/4051/Windows-Impersonation-using-C 。

他のヒント

@Albinが指摘しているように、アクセスの問題に対処する正しい方法は、属性ではなくファイルのアクセス許可を使用することです。

ユーザーにコンテンツを表示させたくないためにファイルが非表示になっている場合は、単純な(比較的軽量の)暗号化メカニズムが非表示の属性よりも優れたソリューションになることをお勧めします。

十分な権限を持つユーザーは、非表示属性と読み取り専用属性の両方をオフにできることに注意してください。そして通常、誰でもエクスプローラーで「隠しファイルと隠しフォルダーを表示する」機能をオンにすることができます。

非表示の属性を削除する必要はありません。ただし、読み取り専用の解決策は他にありません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top