LockScreen.SetImageFileAsync(...)导致UnauthorizedAccessException

时间:2013-09-26 23:54:41

标签: c# windows-8 windows-runtime

我正在尝试在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);

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

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

3 个答案:

答案 0 :(得分:1)

您需要访问图片库。 通过打开Package.appxmanifest设置它,转到功能并检查图片库。

答案 1 :(得分:0)

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

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

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);
        }
    }

它将下载图像并进行设置。在我的情况下,我的代码和我的代码都没有例外。

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

也尝试使用存储文件来设置流。

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

试着让我知道:)。

答案 2 :(得分:0)

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