In Linux, I built a skeleton of LSM. In this demo, each time an application is launched its path is printed from the LSM which is compiled in the kernel.
Can you please advise if there is a similar concept in windows kernel ?
As long as you assume that your blocked processes will always nicely have the right name, sure it is possible. But that could be a very dubious assumption if, for example, you are trying to block malware etc.
note that if it is malware, they can use the actual winword.exe or calc.exe etc. and inject the 'bad' code after the process has started. The point is that if you want to make something that adds security, it is not a simple job. And you will need to know a lot more about the execution environment than simply choosing the right call back sample code
build a kernel module that will be "triggered" upon any application launch
This is easy, with a CreateProcess notify routine: google for PsSetCreateProcessNotifyRoutineEx. From there you can get the filename of the exe file.
As others hinted- blocking programs only by filename or path is naive, not serious, and so on, you name it.
Just consider that Windows comes with something called AppLocker. it will do this job for you