0

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

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

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

4

3 回答 3

1

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

于 2013-09-27T10:20:39.767 回答
0

我猜它的某种特权问题可能是 admin 。

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

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

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

下载此示例并尝试运行并查看是否存在错误 锁屏示例

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

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

试着让我知道:)

于 2013-09-28T04:39:10.427 回答
0

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

于 2014-09-30T12:17:03.963 回答