我在Visual Studio Express 2012 for Windows 8中编写了一个DLL。它只是一个DLL,因此没有应用程序清单指定功能或类似的东西。在DLL中,我正在调用StorageFile.GetFileFromPathAsync()。我正在从PowerShell脚本调用DLL。
当我使用该功能访问“我的图片”文件夹中的文件时,它可以正常工作。当我尝试访问我的用户文件夹中的文件时,我得到了拒绝访问。
我真正没有得到的是:当我在运行相同操作系统的另一台计算机(Windows Server 2012)上使用相同的DLL尝试此操作时,我会对任何文件夹(包括“我的图片”文件夹)获取“拒绝访问”。 / p>
所以,我的问题是:如何访问第二台计算机上的“我的图片”文件夹中的文件(就像我在第一台计算机上所做的那样),如果使用DLL无法实现,那么它是如何实现的呢?在第一台电脑上工作?
更多详情:
这是DLL中的确切代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Windows.Storage;
using Windows.Storage.Pickers;
using Windows.Foundation;
using Windows.System.UserProfile;
namespace ExactFerret
{
public class Windows8LockScreen
{
public static void SetBackground(string Path)
{
SetBackgroundTask(Path).GetAwaiter().GetResult();
}
private async static Task SetBackgroundTask(string FilePath)
{
StorageFile File = await StorageFile.GetFileFromPathAsync(FilePath);
await LockScreen.SetImageFileAsync(File);
}
}
}
以下是我在PowerShell中调用DLL的方法:
Add-Type -Path .\Windows8.dll
[ExactFerret.Windows8LockScreen]::SetBackground('C:\Users\jigglypuff\Exact Ferret\Pictures\$ef$test.jpg')
以下是我收到的错误消息:
Exception calling "SetBackground" with "1" argument(s): "Access is denied.
(Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))"
At line:1 char:1
+ [ExactFerret.Windows8LockScreen]::SetBackground('C:\Users\jigglypuff\Exact
Ferre ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : UnauthorizedAccessException
谢谢!