0

ユーザー foo の下で実行される C# で記述されたコンソール プログラムがあります。プログラムはファイルを作成します。場合によっては、IUSR で実行されている Web アプリケーションが、コンソール アプリによって作成されたファイルを削除できる必要があります。

ファイルの作成時に IUSR に DELETE (または同等のもの) を許可したいと思います。どうすればC#でそれを行うことができますか?

FileIOPermissionを見つけましたが、それが何のためにあるのかわかりませんが、特定のユーザーを指定できないため、それが今必要なものであると確信しています。

誰でもこれを行う方法について良い指針を得ましたか?

[ちなみに、一部のサークルでは、任意のファイルに対する IUSR DELETE 権限を付与することは、かなり危険なことですが、この場合、関連するファイルの性質により、IUSR にこれらの権利を付与することを喜んで意味します]

4

3 に答える 3

2

@Sabau:あなたの答えを修正してくれてありがとう-それは私にもう一度やり直すよう促しました.今回はうまくいったようです. 他の人がそれがどのように行われたかを見ることができるように、私は小さなテストプログラムを書きました. 私のテストでは、IUSR に完全な制御を与えましたが、明らかに、好きなものを追加/拒否できます。

    using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Security.Permissions;
using System.Security.Principal;
using System.Security.AccessControl;

namespace GrantingFilePermsTests
{
    class Program
    {
    static void Main(string[] args)
    {
        string strFilePath1 = "E:/1.txt";
        string strFilePath2 = "E:/2.txt";

        if (File.Exists(strFilePath1))
        {
        File.Delete(strFilePath1);
        }
        if (File.Exists(strFilePath2))
        {
        File.Delete(strFilePath2);
        }

        File.Create(strFilePath1);
        File.Create(strFilePath2);
        // Get a FileSecurity object that represents the
        // current security settings.
        FileSecurity fSecurity = File.GetAccessControl(strFilePath1);

        // Add the FileSystemAccessRule to the security settings.
        fSecurity.AddAccessRule(new FileSystemAccessRule("IUSR_SOMESERVER",FileSystemRights.FullControl,AccessControlType.Allow));

        // Set the new access settings.
        File.SetAccessControl(strFilePath1, fSecurity);



        }
    }
}

すべての回答に感謝します。

于 2009-02-06T01:57:19.480 に答える
1

Windows エクスプローラーを使用 -> ファイルが存在するディレクトリを選択 -> 右クリック -> [プロパティ] -> [セキュリティ] タブ -> IUSR_xxx ユーザー アカウントに「変更」権限を付与します。

コンソール アプリと Web アプリの両方を実行するコンピューターに物理的にアクセスできると思います。

編集: ntfs アクセス許可をプログラムで設定するには、 System.Security.AccessControl.FileSecurityクラスとFile.SetAccessControlメソッドをいじる必要があります。

それが役に立てば幸い。

于 2009-02-06T00:42:59.677 に答える
1

簡単なグーグル検索により、C#でNTFSアクセス許可を設定する

于 2009-02-06T00:43:56.807 に答える