You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用.NET MAUI开发Windows和Mac桌面应用时访问本地资源的方法

.NET MAUI桌面应用:本地硬盘访问与CLI调用指南

一、本地硬盘文件夹访问权限

Windows平台

  • .NET MAUI Windows应用基于WinUI 3,分两种场景:
    • 打包应用(MSIX):默认仅能访问Documents、Pictures等用户常用文件夹。若需访问任意文件夹,需在Package.appxmanifest中添加broadFileSystemAccess权限:
      <Capabilities>
          <rescap:Capability Name="broadFileSystemAccess" />
      </Capabilities>
      
      该权限需要用户在系统设置中手动授予,且发布到Microsoft Store的应用需经过额外审核。
    • 未打包应用(EXE):不受UWP权限限制,和传统WinForms/WPF应用一致,只要当前用户拥有系统权限,就能访问本地所有文件夹。

Mac平台

  • Mac应用遵循沙箱机制,默认仅能访问应用沙箱内文件,以及用户通过文件选择器手动授权的文件夹。
  • 若需访问任意文件夹:
    1. 在Info.plist中添加权限说明,例如全磁盘访问的描述:
      <key>NSFileSystemUsageDescription</key>
      <string>需要访问磁盘文件以完成数据处理</string>
      
    2. 用户需在系统偏好设置→安全与隐私→隐私→全磁盘访问中,手动开启应用的权限。
  • 发布到Mac App Store的应用建议优先通过用户手动选择文件/文件夹的方式获取授权,全磁盘权限的审核标准较为严格。

二、调用系统CLI应用

可通过System.Diagnostics.Process类实现跨平台CLI调用,以下是通用实现方案:

基础示例代码

using System.Diagnostics;

async Task RunCliCommand()
{
    // 替换为目标CLI路径和参数
    string cliPath = "/usr/bin/ls"; // Mac示例;Windows示例:@"C:\Windows\System32\powershell.exe"
    string arguments = "-la"; // 示例参数

    var startInfo = new ProcessStartInfo
    {
        FileName = cliPath,
        Arguments = arguments,
        RedirectStandardOutput = true,
        RedirectStandardError = true,
        UseShellExecute = false,
        CreateNoWindow = true // Windows下隐藏CLI窗口
    };

    using var process = Process.Start(startInfo);
    if (process == null) return;

    string output = await process.StandardOutput.ReadToEndAsync();
    string errorOutput = await process.StandardError.ReadToEndAsync();
    await process.WaitForExitAsync();

    // 处理输出结果
    Console.WriteLine("CLI输出:");
    Console.WriteLine(output);
    if (!string.IsNullOrEmpty(errorOutput))
    {
        Console.WriteLine("错误信息:");
        Console.WriteLine(errorOutput);
    }
}

平台注意事项

  • Windows:系统内置CLI(如cmd、powershell)可直接使用文件名(系统会自动在PATH中查找);第三方CLI建议使用完整路径。若调用需要管理员权限的CLI,需确保应用以管理员身份运行。
  • Mac:通过终端which <cli-name>命令可获取CLI的完整路径;沙箱应用调用系统CLI通常无权限问题,调用第三方CLI需确保应用有权限访问其所在目录,或通过用户手动授权解决。

内容的提问来源于stack exchange,提问作者Satyajit

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 17:18:24