什麼是基於來自C#中的文件夾結構.ISO文件的最佳方式?是否有除DiscUtils以外的開源庫?運行到問題與DiscUtils,我想嘗試另一種路徑。我有什麼選擇?我更喜歡開源,但也可能願意爲解決方案付費。DVD ISO從C# - .NET DiscUtils替代
4
A
回答
4
這裏有一些更多的嘗試
2
你可以嘗試普里莫刻錄機(音頻CD不支持):http://www.primoburner.com/Downloads.aspx
5
Windows實際上附帶使用本地API創建ISO等等:Image Mastering API。一旦從Windows SDK獲取IMAPI2 Interop程序集或從this CodeProject article about IMAPI2(可能更容易),創建ISO只是幾行代碼。
不幸的是,你還需要幾段妥善清理所涉及的COM廢話,但最終的結果還是蠻管理:
MsftFileSystemImage iso = new MsftFileSystemImage();
iso.ChooseImageDefaultsForMediaType(IMAPI_MEDIA_PHYSICAL_TYPE.IMAPI_MEDIA_TYPE_DISK);
iso.FileSystemsToCreate = FsiFileSystems.FsiFileSystemISO9660 | FsiFileSystems.FsiFileSystemJoliet;
iso.Root.AddTree(@"c:\path\goes\here\", false);
dynamic resultImage = iso.CreateResultImage();
dynamic imageStream = resultImage.ImageStream;
IStream newStream = null;
if (imageStream != null)
{
STATSTG stat = null;
imageStream.Stat(stat, 0x1);
int res = SHCreateStreamOnFile(@"c:\path\to\your.iso", 0x1001, newStream);
if (res == 0 && newStream != null)
{
IntPtr inBytes = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(long)));
IntPtr outBytes = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(long)));
try
{
imageStream.CopyTo(newStream, stat.cbSize, inBytes, outBytes);
}
finally
{
Marshal.FinalReleaseComObject(imageStream);
newStream.Commit(0);
Marshal.FinalReleaseComObject(newStream);
Marshal.FreeHGlobal(inBytes);
Marshal.FreeHGlobal(outBytes);
Marshal.FinalReleaseComObject(resultImage);
Marshal.FinalReleaseComObject(iso);
}
}
else
{
Marshal.FinalReleaseComObject(imageStream);
Marshal.FinalReleaseComObject(resultImage);
Marshal.FinalReleaseComObject(iso);
//TODO: Throw exception or do whatever to signal failure here
}
}
else
{
Marshal.FinalReleaseComObject(resultImage);
Marshal.FinalReleaseComObject(iso);
//TODO: Throw exception or do whatever to signal failure here
}
詳細爲Win32/COM API膠的使用可以唯一位SHCreateStreamOnFile:上pinvoke.net找到。 istream和STATSTG是System.Runtime.InteropServices.ComTypes.。
相關問題
- 1. 使用.net創建ISO文件DiscUtils
- 2. 使用.NET創建CD/DVD ISO映像
- 3. .Net C#String.GetHashCode()替代
- 4. 從UTF8轉換爲ISO 8859-5,越來越ISO 8859-1代替
- 5. 替代WebBrowser控件.Net C#?
- 6. python寫入CD/DVD的iso文件
- 7. 自動刻錄100+ .ISO DVD映像
- 8. 從根文件系統創建可引導的ISO DVD
- 9. .NET/WPF替代
- 10. 替代在.NET
- 11. .NET替代
- 12. ZooKeeper替代.net
- 13. .NET WebClient.DownloadData(url)在C++/WinAPI中的替代?
- 14. 在ISO C89中strcpy的替代方案
- 15. 從.ISO Windows安裝
- 16. C++中的ISO文件
- 17. 從java代碼到.net(c#)
- 18. 如何從C#刻錄視頻DVD?
- 19. .Net MVC替代Formtastic
- 20. ISO C++編譯錯誤的C代碼
- 21. 從DVD安裝,NSIS
- 22. 使用C播放DVD#
- 23. DVD + R可以保存.iso文件並通過BIOS啓動?
- 24. 需要幫助獲取最新的CentOS iso DVD映像
- 25. PHP在本地服務器上顯示ISO DVD映像
- 26. Windows 7旗艦版ISO - DVD或閃存驅動器?
- 27. 從c到C++的替代方法
- 28. .NET枚舉繼承替代
- 29. 如何使用C#刻錄ISO#
- 30. C#替代元組
使用** ** DiscUtils對當前項目的要求......是你有什麼確切的問題考慮? – SliverNinja 2014-09-04 14:52:26