1

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

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

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

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

前もって感謝します。

4

3 に答える 3

1

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

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

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

「プロセスの途中で」実行中のアカウントを変更するには、さらに作業を行う必要があります。http://www.codeproject.com/Articles/4051/Windows-Impersonation-using-など、このテーマに関する優れた記事を見つけてください。 C。 _

于 2012-02-17T17:46:37.723 に答える
0

非表示の属性を削除する必要はありません。ただし、読み取り専用のソリューションは他にありません。

于 2012-02-17T17:58:38.670 に答える
0

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

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

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

于 2012-02-17T17:56:49.720 に答える