![](/img/trans.png)
[英]UnauthorizedAccessException when accessing a directory I just created
[英]GetAccessControl throws UnauthorizedAccessException accessing SystemData directory
我一直在使用C#,特別是UWP / WPF框架,正在編輯C:\\\\ProgramData\\\\Microsoft\\\\Windows\\\\SystemData
某些子目錄,以編輯和刪除存儲在其中的鎖屏圖像。 C:\\\\ProgramData\\\\Microsoft\\\\Windows\\\\SystemData\\\\ID\\\\ReadOnly
我原本剛剛手動更改的權限ProgramData
目錄,然后SystemData
目錄,但每當系統修改里面的文件SystemData
目錄,其權限重置。 (我希望將程序的最終產品安排為定期運行,因此無法每次都手動執行此操作。)只需調用: Directory.GetAccessControl("C:\\\\ProgramData\\\\Microsoft\\\\Windows\\\\SystemData");
產生System.UnauthorizedAccessException: 'Attempted to perform an unauthorized operation.'
。
該目錄的默認權限不允許我讀取目錄的屬性或訪問其文件,而無需以管理員身份修改其權限。 因為我可以手動進行操作(編輯權限以完全控制自己),所以我認為在C#中可以采用某些方法。 我的app.manifest
確實具有requireAdministrator
作為requestedExecutionLevel
並且我當前未使用任何模擬,並且當前WindowsIdentity
顯示為LAPTOP-ID\\\\USERNAME
。
當我什至無法獲得需要編輯其權限的目錄的訪問控制時,如何執行這些更改?
當調用上述函數時,它僅設置前4張圖像,因此在調用該函數之前,我需要刪除我認為的第5張圖像。
您的描述是正確的。 請檢查以下屏幕截圖,默認的鎖屏圖像存儲在LockScreen_o
文件夾中。 每次調用上述方法( LockScreen.SetImageFileAsync
)時,它將創建一個新文件夾並以z順序命名該文件夾的名稱。 這意味着每個鎖屏圖像都有自己的文件夾,因此您無需刪除鎖屏后創建的第五張圖像。 文件夾的默認所有者是無法用uwp代碼修改的系統 。
我使用以下代碼來設置鎖屏,它適用於每個圖像。
private async void Button_Click(object sender, RoutedEventArgs e)
{
var picker = new Windows.Storage.Pickers.FileOpenPicker();
picker.ViewMode = Windows.Storage.Pickers.PickerViewMode.Thumbnail;
picker.SuggestedStartLocation = Windows.Storage.Pickers.PickerLocationId.PicturesLibrary;
picker.FileTypeFilter.Add(".jpg");
picker.FileTypeFilter.Add(".jpeg");
picker.FileTypeFilter.Add(".png");
Windows.Storage.StorageFile file = await picker.PickSingleFileAsync();
if (file != null)
{
await LockScreen.SetImageFileAsync(file);
}
else
{
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.