C# で所有権を取得してファイルの ACL を変更しようとしていますが、管理者としても例外が発生します。
System.UnauthorizedAccessException: Attempted to perform an unauthorized operation.
プログラムを実行しているユーザーは、Windows インターフェイスを介して所有権を取得し、アクセス許可を変更することができます。
私のコード:
string fileName = @"C:\temp\mount\Windows\System32\Boot\en-US\winload.exe.mui";
FileSecurity fileSec = File.GetAccessControl(fileName);
fileSec.SetOwner(WindowsIdentity.GetCurrent().User);
File.SetAccessControl(fileName, fileSec); //exception thrown here
現在のユーザーが管理者グループのメンバーであることを確認するチェックも追加しました。
WindowsIdentity wi = WindowsIdentity.GetCurrent();
WindowsPrincipal wp = new WindowsPrincipal(wi);
bool isAdmin = wp.IsInRole(WindowsBuiltInRole.Administrator); //returns true
背景情報: WinPE イメージを作成しており、winload.exe.mui ファイルを置き換える必要があります。
また、このファイルの現在のアクセス許可では、「信頼できるインストーラー」へのフル アクセスのみが許可されます。
Windows 7で実行しています