我的UWP应用中有以下代码
public static class DeviceIoControlHelper
{
[DllImport("kernel32.dll", SetLastError = true, CharSet = CharSet.Ansi)]
private static extern SafeFileHandle CreateFile(
string lpFileName,
[MarshalAs(UnmanagedType.U4)] FileAccess dwDesiredAccess,
[MarshalAs(UnmanagedType.U4)] FileShare dwShareMode,
IntPtr lpSecurityAttributes,
[MarshalAs(UnmanagedType.U4)] FileMode dwCreationDisposition,
[MarshalAs(UnmanagedType.U4)] FileAttributes dwFlagsAndAttributes,
IntPtr hTemplateFile);
public static SafeFileHandle ReturnFileHandler()
{
const string drive = @"\.LCD";
SafeFileHandle hddHandle = CreateFile(drive, FileAccess.Read, FileShare.None, IntPtr.Zero, FileMode.Open, FileAttributes.Normal, IntPtr.Zero);
if (hddHandle.IsInvalid)
{
int lastError = Marshal.GetLastWin32Error();
string errorMessage = string.Format(@"!! Invalid {0}; Error ({1}): {2}", drive, lastError, new Win32Exception(lastError).Message);
throw new Win32Exception(errorMessage);
}
return hddHandle;
}
}
但是,当我试图从MainPage.xaml.cs访问它时,我得到了一个"拒绝访问"的表达式。将Visual Studio 2015社区切换到管理模式对也没有帮助
public sealed partial class MainPage : Page
{
public MainPage()
{
this.InitializeComponent();
try
{
DeviceIoControlHelper.ReturnFileHandler();
}
catch(Exception ex)
{
}
}
}
我在Visual Studio 2015 Community 中使用带有C#的UWP
您需要使用CreateFile2来使用通用Windows应用程序打开文件。不过,它不允许您打开设备。引用MSDN:当从Windows应用商店应用程序调用时,CreateFile2会被简化。只能打开ApplicationData.LocalFolder或Package.InstalledLocation目录中的文件或目录