Set property in Win32_Volume

I'm trying to figure out how to set "IndexingEnabled" property value for a disk (disk indexing is enabled/disabled). From the documentation it follows that this property can be read/write.

using (ManagementObjectSearcher Win32_Volume =
    new ManagementObjectSearcher("Select IndexingEnabled from Win32_Volume where DriveLetter = 'C:'"))
{
    foreach (ManagementObject volume in Win32_Volume.Get())
    {
        volume.SetPropertyValue("IndexingEnabled", true); // true or false
    }
}

or

ManagementScope scope = new ManagementScope("\\\\.\\root\\cimv2");
ObjectQuery query = new ObjectQuery("Select IndexingEnabled from Win32_Volume where DriveLetter='C:'");
scope.Connect();

using (ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, query))
{
    foreach (ManagementBaseObject drive in searcher.Get())
    {
        drive.SetPropertyValue("IndexingEnabled", true);
    }
}

An error is not generated, but the value of the property does not change. Administrator rights are active. What am I doing wrong? thank

Upvotes: 2

Views: 358

Answers (1)

dxiv
dxiv

Reputation: 17658

SetPropertyValue only updates the wrapper object. The changes are not committed (and do not become effective) until Put is called, for example volume.Put();.

Upvotes: 1

Related Questions