Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有没有办法在Windows C#中区分macintosh或macOS文件类型?_C#_Macos_File - Fatal编程技术网

有没有办法在Windows C#中区分macintosh或macOS文件类型?

有没有办法在Windows C#中区分macintosh或macOS文件类型?,c#,macos,file,C#,Macos,File,我的C#项目必须判断一个即将读取的文件是否是运行在macOS上的Mac文件 有一个C#项目运行在Windows 2008或更高版本上。我想知道即将读取的文件是否是运行在Mac操作系统上的Mac文件 我想知道这样的代码是否可行 string fileType = fileTypeChecker(anonymousFile); if(fileType=="mac") { // do something. } 它们可以通过文件扩展名来区分吗?或任何类型

我的C#项目必须判断一个即将读取的文件是否是运行在macOS上的Mac文件

有一个C#项目运行在Windows 2008或更高版本上。我想知道即将读取的文件是否是运行在Mac操作系统上的Mac文件

我想知道这样的代码是否可行

    string fileType = fileTypeChecker(anonymousFile);
    if(fileType=="mac")
    {
        // do something.
    }

它们可以通过文件扩展名来区分吗?或任何类型的文件签名?

阅读后我的理解是,您想检查该文件是否适用于Mac或Windows。您可以通过以下方式完成此操作:

string fileName = "hamza.DMG";
string mimeType = System.Web.MimeMapping.GetMimeMapping(fileName);
它将返回指定文件名的MIME映射,您可以根据该映射轻松地进行区分。有关更多信息,请查看此项

注:对于.NET Framework>=4.5


MacOS使用Mach-O二进制可执行格式

您需要查找Mach-O二进制文件的签名,如下所述:

是我想要用来实现这个目标的开源软件。 你认为使用下面的代码片段有助于完成我的任务吗? 我认为这是可行的

public void ShouldOpenMachO()

    {

        var fileName = Utilities.GetBinary("simple-mach-o");

        ELFSharp.MachO.MachO machO;

        Assert.AreEqual(MachOResult.OK, MachOReader.TryLoad(fileName, out machO));

    }

“在Mac操作系统上运行”是什么意思?您是否通过网络共享访问它们?如果不是,你只想获取一个任意文件并确定它源于哪个操作系统,那么在大多数情况下,我认为这是不可能的。为什么?我认为这个问题的前提是文件有一个与操作系统相关的“类型”,目标是找到它。这是不正确的,除非搜索某些特定的文件类型,这些文件类型是苹果专有的,因此可能只起源于Mac电脑。但这不是可以发现的文件属性。我是一名安全解决方案程序员。我主要处理windows PE文件。但这次我也要处理mac文件。大多数情况下,我的软件将在没有internet连接的隔离环境中运行。正如John所说,我获取一个任意文件并确定它是否是Mac文件。目前我唯一能想到的方法是使用扩展名“dmg”。“我是一名安全解决方案程序员”-请你的问题解释你的目标,而不是你的职称。首先,您需要正确定义“在Mac操作系统上运行的Mac文件”。因为例如,JPEG文件可以在任何具有适当查看器软件的操作系统上打开。您提到了“dmg”,它是用于软件安装的特定于Mac的。您应该了解“幻数”以识别文件格式。如果你在网上搜索,你会发现。这告诉你一个JPEG文件是一个图像,但它是否在Mac上。我用这段代码检查某个dmg文件。它只告诉你这个文件是八位字节/流。@Hwanchan:你可以根据这个区分mac文件或windows文件。“你可以根据这个区分mac文件或windows文件”-不,你不能,因为你甚至不知道OP到底想要什么。如果我将
.exe
重命名为
.dmg
,此代码仍将返回
应用程序/八位字节流
,并且不会告诉该文件是用于MacOS还是用于Windows。看起来很稳定。不过,这取决于您的用例,因为标准链接器生成的Mach-O应该可以工作。如果你用它来对付一些疯狂的手写可执行文件(比如恶意软件),它可能是不够的。