Two questions to ask. 1. Does WFP have a Registry Callback which allows all registry calls at user and kernel level to be filtered and 2. How to intercept a thread from creating a thread or process ?
How to intercept a thread from creating a thread or process?The PsSetCreateProcessNotifyRoutineEx should work for blocking process creation (AFAIR you get also the information about the thread creating the new process since the callback is run in its context). As far as I know there is nothing similar for blocking thread creation. However, if you need to block creation of remote threads, that usually requires obtaining a handle to the target process with write permissions (and that can be observer/blocked via ObRegisterCallbacks).
Registry operations can be monitored and filtered through CmRegisterCallback(Ex). Well, some operations are kinda undocumented, so it is not easy to filter them, howerver, such usually require administrative privileges (saving/loading/replacing/restoring registry trees).