在我的 C# 3.5 程序中,我想从 MS Virtual PC 机器访问 NTFS/FAT 驱动器。
我可以在 Microsoft 网站上看到一些用于 Virtual PC 的 C++ API,但找不到 .NET 的 API(我应该使用 P-Invoke 吗?)。我想通过帮助或常规 .NET API 调用(如 File.ReadAllText、Directory.GetDirectories 等)检查虚拟机内文件系统中的文件和文件夹。
示例代码将不胜感激。
在我的 C# 3.5 程序中,我想从 MS Virtual PC 机器访问 NTFS/FAT 驱动器。
我可以在 Microsoft 网站上看到一些用于 Virtual PC 的 C++ API,但找不到 .NET 的 API(我应该使用 P-Invoke 吗?)。我想通过帮助或常规 .NET API 调用(如 File.ReadAllText、Directory.GetDirectories 等)检查虚拟机内文件系统中的文件和文件夹。
示例代码将不胜感激。
似乎与您的VMDK 问题类似的问题...
无论如何,您可以使用WinMount ($) 之类的东西来挂载映像,然后像访问任何其他本地驱动器一样访问它。
如果您有 MS 虚拟服务器,另一个选项是VHDMount 。
两者都有一个命令行工具,如果需要,可以从应用程序中启动。
根据主机操作系统,您可以使用 Windows 7 / Server 2008 中引入的虚拟硬盘 API。我不知道 .NET 是否支持它。据我所知,您将不得不使用互操作来访问它。
您可以在http://www.jmedved.com/2009/05/open-and-attach/中找到一个示例,该示例仅定义了附加 VHD 绝对需要的结构/函数。更完整的互操作定义类可以在http://files.codes-sources.com/fichier_fullscreen.aspx?id=50320(参见Win7_VirtualDiskWrapper/VirtualDiskWrapper/Interop)目录中找到。
请注意,使用此 API 需要管理权限。
如果您的应用程序应该在早于 Win7 的操作系统上运行,那么据我所知,您必须使用此处回复/评论中描述的外部工具。