I just tried DirectoryInfo class like this and it did setup all sub-folders with read-only attribute.
Code:
            DirectoryInfo DirInfo = new DirectoryInfo(@"C:\Program Locations");
            DirInfo.Attributes = FileAttributes.ReadOnly;