2011-08-10 1 views
2

C#を使用して、プログラムを実行している現在のWindowsユーザーがアクセスできるフォルダを作成するにはどうすればよいですか?現在のログオンユーザーのみがアクセスできるフォルダを作成

つまり、「MyDomain \ John」としてWindowsにログインし、プログラムを実行して「D:\ JohnOnly」というフォルダを作成します。ログアウトした後、 "MyDomain \ Sam"としてログインし直してください。 「D:\ JohnOnly」は開けません。覚えておくべき唯一のことは、これが唯一のWindowsマシン上で表彰されていることである

http://msdn.microsoft.com/en-us/library/system.security.accesscontrol.filesystemrights.aspx

:ここ

おかげで、

+0

あなたは[隔離ストレージ](http://msdn.microsoft.com/en-us/library/3ak841sy.aspx)? – harpo

+0

@harpo、thx、しかし、私は、ローカルのハードドライブ上のどこにでもパスが必要です。 – sean717

答えて

0

これは私がより多くの研究の後に書いたものです。深刻なバグが見つからなければ、答えとしてマークします。ありがとう。 - 何も(ファイル+フォルダ)あなたはこれらのフォルダの中に作成

あなたは(ユーザーをローミング)ApplicationDataを使用することができますかLocalApplicationData(非ローミングユーザー用)Environment.SpecialFolderから:

0

は、FileSystemの権利へのリンクです。私は簡単にLinuxのボックスでHDを読むことでこのセキュリティをバイパスできます。それは働いていた

public void CreatePrivateDirectory(string path) 
    { 
    DirectorySecurity directorySecurity = new DirectorySecurity(); 
    SecurityIdentifier userSid = WindowsIdentity.GetCurrent().User; 
    directorySecurity.AddAccessRule(new FileSystemAccessRule(userSid, FileSystemRights.FullControl, 
                   InheritanceFlags.ContainerInherit | 
                   InheritanceFlags.ObjectInherit, 
                   PropagationFlags.None, AccessControlType.Allow)); 
    if(!Directory.Exists(path)) 
    { 
     Directory.CreateDirectory(path, directorySecurity); 
    } 
    } 

関連する問題