Артём Дадашьянц Asked:2022-07-29 17:53:38 +0000 UTC2022-07-29 17:53:38 +0000 UTC 2022-07-29 17:53:38 +0000 UTC 如何授予将文件作为 C# 程序运行的权限? 772 我们假设在/home/ketronix 目录下有一个文件ao.desktop,任务就是赋予这个文件运行的权限。您需要通过代码执行此操作。在终端中,这是通过 chmod 命令完成的,是否可以通过代码执行此操作而不执行 chmod 命令?因此,您可以使用以文件形式传递给它的参数执行系统实用程序,但我想知道是否有可能以某种不同的方式执行它? linux c# 1 个回答 Voted Best Answer Pak Uula 2022-07-29T19:14:38Z2022-07-29T19:14:38Z 你需要安装包Mono.Posix.NETStandard bash$ dotnet add package Mono.Posix.NETStandard 在这个包中,该类UnixFileInfo提供了一个FileAccessPermissions封装对系统调用的调用的属性chmod。 以下是标记/取消标记UserExecute文件的程序示例: using System; using Mono.Unix; namespace Example { class Example { public static void Main() { try { string fileName = "test.file"; Console.WriteLine("Triggering 'user executable' flag for file " + fileName); var ufi = new UnixFileInfo(fileName); Console.WriteLine("File permissions before: " + ufi.FileAccessPermissions); if (0 != (ufi.FileAccessPermissions & FileAccessPermissions.UserExecute)) { ufi.FileAccessPermissions &= ~FileAccessPermissions.UserExecute; } else { ufi.FileAccessPermissions |= FileAccessPermissions.UserExecute; } ufi.Refresh(); Console.WriteLine("File permissions after: " + ufi.FileAccessPermissions); } catch (Exception e) { Console.WriteLine(e); } } } } 工作示例: bash$ ls -l test.file; dotnet run; ls -l test.file ; dotnet run; ls -l test.file -rw-rw-r-- 1 user user 0 Jul 29 19:58 test.file Triggering 'user executable' flag for file test.file File permissions before: OtherRead, GroupWrite, GroupRead, UserWrite, UserRead File permissions after: OtherRead, GroupWrite, GroupRead, UserReadWriteExecute -rwxrw-r-- 1 user user 0 Jul 29 19:58 test.file Triggering 'user executable' flag for file test.file File permissions before: OtherRead, GroupWrite, GroupRead, UserReadWriteExecute File permissions after: OtherRead, GroupWrite, GroupRead, UserWrite, UserRead -rw-rw-r-- 1 user user 0 Jul 29 19:58 test.file 首次运行时,该文件变为可执行文件。在第二次启动时,它不再是可执行的。 在 .NET SDK 6.0 上测试
你需要安装包
Mono.Posix.NETStandard在这个包中,该类
UnixFileInfo提供了一个FileAccessPermissions封装对系统调用的调用的属性chmod。以下是标记/取消标记
UserExecute文件的程序示例:工作示例:
首次运行时,该文件变为可执行文件。在第二次启动时,它不再是可执行的。
在 .NET SDK 6.0 上测试