【问题标题】:LockScreen.SetImageFileAsync(...) causes UnauthorizedAccessExceptionLockScreen.SetImageFileAsync(...) 导致 UnauthorizedAccessException
【发布时间】:2013-09-26 23:54:40
【问题描述】:

我正在尝试在我的 WinRT 应用程序的锁定屏幕上设置背景图像。但是当这段代码被执行时,我得到一个带有消息的 UnauthorizedAccessException:

“访问被拒绝。(来自 HRESULT 的异常:0x80070005 (E_ACCESSDENIED))”

代码取自 MSDN,看起来不错。

private async void ButtonBase_OnClick(object sender, RoutedEventArgs e)
    {
        var imagePicker = new FileOpenPicker
        {
            ViewMode = PickerViewMode.Thumbnail,
            SuggestedStartLocation = PickerLocationId.PicturesLibrary,
            FileTypeFilter = { ".jpg", ".jpeg", ".png", ".bmp" },
        };

        var imageFile = await imagePicker.PickSingleFileAsync();

        if (imageFile != null)
        {
            await LockScreen.SetImageFileAsync(imageFile);
        }
    }

下面描述的异常是在这行代码中抛出的:

await LockScreen.SetImageFileAsync(imageFile);

顺便说一句,我尝试安装一些可以更改锁定屏幕背景的应用程序,但它们都显示错误或只是崩溃。也许我的操作系统版本有问题?

有谁知道如何解决这个问题?请帮忙!

【问题讨论】:

    标签: c# windows-8 windows-runtime


    【解决方案1】:

    您需要访问图片库。 通过打开您的 Package.appxmanifest 进行设置,转到 Capabilities 并检查图片库。

    【讨论】:

    • 对不起,我没有提到在我尝试设置背景图像时抛出异常...图片库已在清单中签入...我刚刚编辑了问题。
    【解决方案2】:

    我遇到了完全相同的问题。问题是我的操作系统没有激活。在您的计算机属性中检查此内容。希望对您有所帮助。

    【讨论】:

    • 是的,这个问题正是因为没有激活windows。谢谢,你的答案是正确的。
    【解决方案3】:

    我猜它的某种权限问题可能是管理员。

    通过应用此代码尝试解决方法

    private async void Button_Click(object sender, RoutedEventArgs e)
        {
            var client = new HttpClient();
            var bytes = await client.GetByteArrayAsync(new Uri("http://transfer-talk.com/wp-content/uploads/Kaka-Real-Madrid.jpg"));
            StorageFile sf = await Windows.Storage.ApplicationData.Current.LocalFolder.CreateFileAsync("test.jpg", CreationCollisionOption.ReplaceExisting);
            await FileIO.WriteBytesAsync(sf, bytes);
            //var imageFile = await imagePicker.PickSingleFileAsync();
    
            //if (imageFile != null)
            {
                await LockScreen.SetImageFileAsync(sf);
            }
        }
    

    它将下载一个 Image 并设置 .在我的情况下,您的代码和我的代码都没有例外。

    下载此示例并尝试运行,看看是否存在错误lock screen sample

    也尝试设置流而不是使用存储文件。

    await LockScreen.SetImageStreamAsync(await sf.OpenReadAsync());
    

    试着告诉我:)

    【讨论】:

    • 您的所有建议都不起作用...一切都一样。无论如何,谢谢您的帮助!
    • 我猜有某种权限不匹配。不是管理员帐户或尝试通过右键单击运行 vs 并以管理员身份运行:(由于您的问题,我将屏幕图像设置为我提供的 url:D
    猜你喜欢
    • 1970-01-01
    • 2013-11-21
    • 1970-01-01
    • 2011-03-27
    • 1970-01-01
    • 2010-10-23
    • 2019-11-18
    • 2011-07-03
    • 1970-01-01
    相关资源
    最近更新 更多