Found out why it's not working, apparantly Microsoft documented this for it's previous AdsSecurity COM object:
 Originally Posted By: Microsoft

The reason that you cannot use ADSI to set ACEs to propagate down to existing files and folders is because ADSSecurity.dll uses the low-level SetFileSecurity function to set the security descriptor on a folder. There is no flag that can be set by using SetFileSecurity to automatically propagate the ACEs down to existing files and folders. The SE_DACL_AUTO_INHERIT_REQ control flag will only set the SE_DACL_AUTO_INHERITED flag in the security descriptor that is associated with the folder.

Automatic propagation of inheritable ACEs is done only when using the high-level SetSecurityInfo or SetNamedSecurityInfo function. These functions propagate the inheritable ACEs (CONTAINER_INHERIT_ACE or OBJECT_INHERIT_ACE) set on a folder to all existing subfolders and files, as long as the child object's DACL is not SE_DACL_PROTECTED. This is done only in the high-level access control implementation by enumerating the subfolders as well as files, and applying all of the inheritable ACEs.

So this does not mean it cannot be done, you just have to manually apply the aces down the foodchain yourself, the only different you will have to make is to set the AceFlags property to 19 (this folder, subfolders and files inherited) instead of 3 (this folder, subfolders and files) which you apply to the root folder.

Or use VBS to apply the Control Flag.... but as I hate to use VBS for me that is not an option however I will provide the code on how to do it.
be aware that the aforementioned quote applies to AdsSecurity and not to WMI, apparantly WMI uses a high-level SetFileSecurity function.

 Code:
str_path = "D:\test"
Set objSecurity = GetObject("winmgmts:{(Security,Restore)}\\.\root\cimv2:Win32_LogicalFileSecuritySetting='" & str_path & "'")
'Get the Security Descriptor object
objSecurity.GetSecurityDescriptor objSD
objSD.ControlFlags = 33796
'Write back the Security Descriptor
j=objSecurity.SetSecurityDescriptor(objSD)


Or wait till Ruud will implement OUT parameters to KiX (not likely but I'm still hoping).