C# アプリケーションを開発しています。
フォルダーの ACL を変更する必要があります。そのためには、昇格した管理者としてプログラムを実行していますが、すべて正常に動作します。
問題は、フォルダーを所有するユーザーがシステムから削除された場合、フォルダーの所有権を取得しようとすると、無許可の例外が発生することです。
これは失敗するコードです:
using (new PrivilegeEnabler(Process.GetCurrentProcess(), Privilege.TakeOwnership))
{
var directorySecurity = directoryInfo.GetAccessControl();
directorySecurity.SetOwner(WindowsIdentity.GetCurrent().User);
Directory.SetAccessControl(directoryInfo.FullName, directorySecurity);
}
次の行で例外が発生します: directoryInfo.GetAccessControl();
PrivilegeEnabler はProcess Privilegesで定義されたクラスであり、ファイルの所有権を取得するために使用されます。