【发布时间】:2023-04-10 09:04:01
【问题描述】:
我正在创建一个 Cortanta 应用程序(一个通用的 Windows 应用程序,在应用程序中启动了一项服务)。但我遇到了一个错误。我仍在学习这一切是如何运作的。
但这是我得到的错误:
System.UnauthorizedAccessException was unhandled by user code
HResult=-2147024891
Message=Access to the path 'C:\Users\JOHN\AppData\Roaming' is denied.
Source=System.IO.FileSystem
我正在使用 TextWriter,就像我通常在常规桌面应用程序中一样。该服务缺少写入文件所需的权限。
有没有一种方法可以使用代码将服务提升到我需要的位置?我是将其添加到父通用 Windows 应用程序(Cortana 应用程序)还是需要在服务项目本身中执行此操作?
要编写的代码:
using (TextWriter writer = File.CreateText("C:\\Users\\JOHN\\AppData\\Roaming\\APPTEST\\IPC_File.s"))
{
writer.WriteLine(voicecommand.SpeechRecognitionResult.Text.ToString());
}
我尝试暂时授予“所有人”访问 APPTEST 文件夹的权限,但没有任何改变。
或者有什么方法可以找出 Windows 服务有权写入的内容吗?如果我的方法是不工作。
【问题讨论】:
-
你不应该尝试直接访问漫游文件夹,而应该使用存储api,msdn.microsoft.com/en-us/library/windows/apps/mt299098.aspx
-
如果我尝试通过写入文件的方式与桌面应用程序通信,存储 api 是否仍然有效?桌面应用程序有没有办法知道我的通用服务/应用程序使用的存储位置?
-
是的,您也可以将相同的存储 API 用于桌面应用程序
标签: c# service windows-services win-universal-app uwp