【发布时间】:2019-05-23 05:05:56
【问题描述】:
我一直在使用 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。
当我什至无法获得对需要编辑权限的目录的访问控制时,如何执行这些更改?
【问题讨论】:
-
设置锁屏图片可以用
LockScreen.SetImageFileAsync来接近,为什么要修改文件夹访问权限? -
我一直在使用
LockScreen.SetImageFileAsync,但是我发现锁屏的工作方式是ReadOnly的子目录名为LockScreen_A、LockScreen_B等,当锁定屏幕设置(使用上述功能或手动设置),在目录中创建 4 个图像文件 - 原始版本和 3 个调整大小的版本。只有当用户注销时,才会创建第 5 个图像,即锁定屏幕图像。调用上述函数时,它只设置前 4 张图像,因此我需要在调用函数之前删除我认为的第 5 张图像
标签: c# wpf uwp readonly unauthorizedaccessexcepti