2012-02-17 11 views
1

次の属性を持つファイルに書き込もうとしています.HiddenとReadOnlyです。私のプロセスはそれに書き込むことができるはずですが、他のプロセスはReadOnly Accessを持っています。私は、次の午前Hidden/ReadOnlyファイルへの書き込みの推奨方法C#

手順は次のとおりです。ファイルは

  • がファイルに既存の属性を削除する存在

    1. チェックした場合、すなわち隠され、読み取り専用
    2. フィニッシュは
    3. 適用したファイルへの書き込み属性(隠し読み)をファイルに戻す

    これは推奨された方法ではありませんFile Attributesを呼び出し、隠しファイルに書き込みます。私の仕事を達成するためのより良い方法がありますか?

    ありがとうございます。

  • +0

    このプロセスは競合状態になることに注意してください。 –

    答えて

    1

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

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

    Windowsサービスでは、実行中のアカウントをサービスのプロパティから変更します。同じことはWindows Scheduledタスクにも適用されます。

    実行中のアカウントを「プロセスの途中で」変更するには、もう少し作業が必要で、http://www.codeproject.com/Articles/4051/Windows-Impersonation-using-Cのような件名に関する良い記事を見つける必要があります。

    +0

    お寄せいただきありがとうございます。私はここに初心者です、私はどのように参照することができますか?また、現在のところ、このアプリケーションはコンソールアプリケーションであり、後でWindowsサービスに変換する必要があります。あなたが提案したソリューションは、後でアプリの設定に影響を与えますか?ありがとう。 – user591410

    +0

    実際には、その特別なユーザーのコンテキストでアプリケーション全体を実行できます。非常に簡単なWindowsサービスを使用して、私は自分の答えを更新しました。 –

    +0

    ありがとうAlbin!それはうまくいった。 – user591410

    0

    @Albinの注記では、アクセスの問題を解決する正しい方法は、ファイルのアクセス許可であり、属性ではありません。

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

    十分な特権を持つユーザーが隠し属性と読み取り専用属性の両方を無効にすることができます。そして、誰でもExplorerの "隠しファイルとフォルダを表示"機能を有効にすることができます。

    0

    隠し属性を削除する必要はありません。私は、読み取り専用のものでは他の解決策がないことを知っています。

    関連する問題