私はときどきある Web サーバーから別の Web サーバーに Web サイトを移行します。
古いサーバーから新しいサーバーにすべてのファイルをコピーした後、どのフォルダーまたはファイルを IIS で書き込み可能にする必要があるかを (再) 理解するのにかなりの時間がかかります。(ちなみに、おなじみですね? :) )
開始ディレクトリを選択できる WinForms アプリケーションを作成しました。アプリケーションは、各ファイル/ディレクトリのセキュリティ権限がその親ディレクトリのセキュリティ権限と等しいかどうかを (再帰的に) 比較する必要があります。
このアプリケーションを古いサーバーで使用して、異なる権限を持つディレクトリをスキャンしたいと考えています。
例: C:\MySites\Uploads does not have the same permissions set as its parent directory.
(このフォルダーは IIS ユーザー 'IUSR' に対して書き込み可能でしたが、その親フォルダーは読み取り専用でした。)
すべてのディレクトリとファイルをトラバースすることができたという意味で、アプリケーションはほぼ完成しています。私はちょうど彼らの許可を比較する必要があります!
助けていただけますか?ここにあなたの助けが必要な箇所の抜粋があります。
string results = "";
string parentFolderPath = "c:\\someParentDir";
string childItemPath = "c:\\someParentDir\\SomeChildDir.ext";
DirectorySecurity parentFolderAccessControl = Directory.GetAccessControl(parentFolderPath);
DirectorySecurity childItemAccessControl = Directory.GetAccessControl(childItemPath);
if (!parentFolderAccessControl.Equals(childItemAccessControl)) // <-- D'oh here
{
results += childItemPath + " does not have the same permissions set as its parent directory.\n";
}
if
DirectorySecurities が等しくなることはないため、これは常に true です。(その理由は理解できます: 異なるメモリ割り当てへの参照... 何とか何とか。) しかし、DirectorySecurities を比較する最良の方法は何でしょうか?