Voglio comprimere una cartella utilizzando la compressione NTFS in .NET. Ho trovato this post, ma non funziona. Genera un'eccezione ("Parametro non valido").Comprime una cartella utilizzando la compressione NTFS 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);
}
}
Qualcuno sa come attivare la compressione NTFS su una cartella?
gli slash di foward hanno fatto il trucco, grazie !! – decasteljau
Questo è un approccio molto più pulito rispetto alla risoluzione su P/Invoke, ancora più importante, in effetti non ha funzionato nonostante abbia restituito un codice di stato di successo. Sebbene 'ManagementObject' .ctor sia schizzinoso, ho usato questo' string objPath = "Win32_Directory.Name =" + "'" + dir.FullName.Replace ("\\", @ "\\"). TrimEnd (' \ \ ') + "'"; 'per garantire che il' ManagementObject' non getti parametri non validi. –
come si decomprime la directory btw? –