簡體   English   中英

GetAccessControl拋出UnauthorizedAccessException訪問SystemData目錄

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM