- PR -

フォルダ作成時にアクセス権を設定する。

1
投稿者投稿内容
Asoas
ベテラン
会議室デビュー日: 2006/03/10
投稿数: 60
投稿日時: 2006-08-01 13:23
標記、フォルダ作成時に、そのフォルダに対してアクセス権を同時に設定したいと考えております。下記のコードで、対象フォルダ以下のファイルに対しては、アクセス権設定ができたのですが、肝心のフォルダに対してのアクセス権が設定できません。
どなたかご存知の方教えて頂きたく。

アクセス権設定コードだけ抜粋
*******************************************************************
Process Proc = new Process() ;
Proc.StartInfo.FileName = Environment.GetEnvironmentVariable("ComSpec") ;
Proc.StartInfo.CreateNoWindow = true ;
Proc.StartInfo.UseShellExecute = false ;
Proc.StartInfo.RedirectStandardInput = false ;
Proc.StartInfo.RedirectStandardOutput = true ;
Proc.StartInfo.Arguments = @"C:\temp>cacls * /T /E /P everyone:F";
Proc.Start() ;
*******************************************************************
Asoas
ベテラン
会議室デビュー日: 2006/03/10
投稿数: 60
投稿日時: 2006-08-01 13:35
すみません、問題ないコードも書いてしまいました。
下のコードだけです。
CACLS コマンドの設定方法か、又はそれ以外の方法でフォルダのアクセス権を変更できるかという質問です。
宜しくお願いいたします。

******************************************************************
Proc.StartInfo.Arguments = @"C:\temp>cacls * /T /E /P everyone:F";
******************************************************************
Asoas
ベテラン
会議室デビュー日: 2006/03/10
投稿数: 60
投稿日時: 2006-08-01 15:17
前のスレッドで、”XCACLS”を使用すれば、フォルダのアクセス権が設定可能だということを知り、下記のようにコーディングしたのですが、プロセスが終了せずデバッグの途中で思考中になってしまいます。
DOSプロンプトで直接記入すると、問題なくアクセス権限を設定してくれるのですが、コード上からは何故か上述のように設定できません。
問題点があればご指摘いただきたく。
ちなみに言語はC#.netで、OSはXPProです。

***************************************************************************
p.StartInfo.Arguments = @"C:\temp/XCACLS.vbs C:\test /T /E /G everyone:F" ;
***************************************************************************
ぽぴ王子
ぬし
会議室デビュー日: 2006/03/24
投稿数: 475
お住まい・勤務地: お住まい:城・勤務地:城
投稿日時: 2006-08-01 16:23
こんにちは。

> どなたかご存知の方教えて頂きたく。
拝承。

cacls なんだか XCACLS.vbs なんだか XCACLS.EXE なんだかわかり
ませんが(しかしなぜに C:\temp ?) cmd.exe (compec) の引数として
コマンドを指定する場合は、パラメータ /c を付けないとコマンド実行後も処
理が戻ってきません。

コード:
p.StartInfo.Arguments = @"/c C:\temp/XCACLS.vbs C:\test /T /E /G everyone:F";


という感じにすればいいのではないでしょうか。

# ハンドル名はちょっと考えたほうがいいですね
_________________
ぽぴ王子@わんくま同盟
ぽぴ王子の人生プログラミング中 / ぽぴンち。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2006-08-01 21:50
cd /d c:\;mkdir temp;echo y|cacls temp /P everyone:F

基本的に、親ディレクトリのアクセス権を継承するのだし、今回は「フォルダ作成時にアクセス権を設定する」のだから、フォルダが出来たときにそのフォルダに対してアクセス権を設定すれば、中に入っているファイルまで変更する必要はないですよね?

ドライブ(特にシステム ドライブ)直下に Everyone フル コントロールなんてディレクトリ、作りたくありませんけどね。
1

スキルアップ/キャリアアップ(JOB@IT)