C#-UWP-System.UnauthorizedAccessException:“访问被拒绝”。

时间:2018-12-26 16:57:23

标签: c# printing uwp

我正在编写一个需要打印到USB收据打印机(因此POSPrinter不适用)的应用程序,而无需提升“打印对话框”窗口。我发现了一个示例,该示例使用附带的exe(由@Stefan Wick提供给this question)从UWP应用程序中进行打印。该程序的示例在我的开发笔记本电脑上运行。当我在UWP应用中放入相同的代码时,出现以下异常:

  

-System.UnauthorizedAccessException:'访问被拒绝。 (来自HRESULT的异常:0x80070005(E_ACCESSDENIED))'

完整的异常详细信息是:

  

System.UnauthorizedAccessException HResult = 0x80070005     消息=访问被拒绝。 (来自HRESULT的异常:0x80070005(E_ACCESSDENIED))     来源= System.Private.CoreLib     堆栈跟踪:      在System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()      在System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)      在System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)      在System.Runtime.CompilerServices.TaskAwaiter.GetResult()      在

中的POSClient.Views.SellPage.d__60.MoveNext()

此代码块中发生异常:

private async void Button_Click(object sender, RoutedEventArgs e)
    {
        if (imageFile != null)
            ApplicationData.Current.LocalSettings.Values["FileToPrint"] = imageFile.Path;

        if (ApiInformation.IsApiContractPresent("Windows.ApplicationModel.FullTrustAppContract", 1, 0))
        {
            await FullTrustProcessLauncher.LaunchFullTrustProcessForCurrentAppAsync();
        }

    }

LaunchFullTrustProcessForCurrentAppAsync行尝试运行时。

它永远不会到达exe,但是如果有帮助,这里是相关代码:

static void Main(string[] args)
    {
        AutoResetEvent resetEvent = new AutoResetEvent(false);

        if (ApplicationData.Current.LocalSettings.Values.ContainsKey("FileToPrint"))
        {
            Image img = Image.FromFile(ApplicationData.Current.LocalSettings.Values["FileToPrint"] as string);
            PrintDocument doc = new PrintDocument();
            doc.PrintPage += new PrintPageEventHandler((sender, e) =>
            {
                img = ResizeImage(img, e.Graphics.VisibleClipBounds.Size);
                e.Graphics.DrawImage(img, Point.Empty);
                e.HasMorePages = false;
            });
            doc.EndPrint += new PrintEventHandler((sender, e) =>
            {
                resetEvent.Set();
            });
            doc.Print();
        }
        resetEvent.WaitOne();
    }

我认为此错误是由于试图访问文件,但可能是由于试图访问exe?我已经在files文件夹上设置了权限,以允许每个人都具有读/写权限(出于测试目的),但仍然会遇到相同的异常。

此示例代码将所选图像打印到默认打印机。一旦工作成功,我将进行必要的修改以打印收据。

我对UWP相对较新,对此深感困惑(我花了上周时间搜索任何相关内容,但仍然找不到答案)。任何输入将不胜感激!

谢谢。

1 个答案:

答案 0 :(得分:0)

发布此消息后,几乎不相关的搜索就给了我答案。问题出在访问exe。我不知道要修改 package.manifest 文件以赋予exe fullTrustProcess 功能。一旦解决了这些问题,代码就可以完美运行。