Ich möchte einen Ordner mit NTFS-Komprimierung in .NET komprimieren. Ich habe this post gefunden, aber es funktioniert nicht. Es löst eine Ausnahme aus ("Ungültiger Parameter").Komprimieren Sie einen Ordner mit NTFS-Komprimierung in .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);
}
}
Jeder weiß, wie man NTFS-Kompression auf einem Ordner aktiviert?
die foward Schrägstriche haben den Trick, danke !! – decasteljau
Dies ist ein viel sauberer Ansatz als P/Invoke zu lösen, wichtiger noch, es hat trotz der Rückgabe eines Erfolgsstatuscodes nicht funktioniert. Obwohl das 'ManagementObject' .ctor wählerisch ist, habe ich diese 'string objPath =" Win32_Directory.Name = "+"' "+ dir.FullName.Replace (" \\ ", @" \\ ") verwendet. TrimEnd ('\ \ ') + "'"; 'um sicherzustellen, dass das' ManagementObject' keinen ungültigen Parameter auslöst. –
Wie dekomprimiere ich das Verzeichnis BTW? –