Я хочу сжать папку, используя сжатие NTFS в .NET. Я нашел this post, но он не работает. Он генерирует исключение («Недопустимый параметр»).Сжатие папки с использованием сжатия NTFS в .NET
DirectoryInfo directoryInfo = new DirectoryInfo(destinationDir);
if((directoryInfo.Attributes & FileAttributes.Compressed) != FileAttributes.Compressed)
{
string objPath = "Win32_Directory.Name=" + "\"" + destinationDir + "\"";
using(ManagementObject dir = new ManagementObject(objPath))
{
ManagementBaseObject outParams = dir.InvokeMethod("Compress", null, null);
uint ret = (uint)(outParams.Properties["ReturnValue"].Value);
}
}
Кто-нибудь знает, как включить сжатие NTFS в папке?
фолк слэши сделал трюк, спасибо! – decasteljau
Это гораздо более чистый подход, чем разрешение на P/Invoke, что более важно, на самом деле он не работал, несмотря на возвращение кода статуса успеха. Хотя 'ManagementObject' .ctor придирчив, я использовал эту строку: string objPath =" Win32_Directory.Name = "+" '"+ dir.FullName.Replace (" \\ ", @" \\ "). TrimEnd (' \ \ ') + "'"; 'для обеспечения того, чтобы' ManagementObject' не выдавал недопустимый параметр. –
как вы распаковываете каталог? –