Yes it can work but the issue isn't with shell32 which is where the bulk of the Shell APIs reside. For example ShellExecute
resides there and that is used when you call Process.Start
with UseShellExecute
set. Problems occur when you try to use APIs that are designed for desktop users in a web app that doesn't have such a thing. Where the actual problem is depends upon exactly what you're trying to call and since you didn't tell us that it is hard to say.
Out of the box your app pool is probably not loading the user profile of the user account under which it runs. Hence there is no user profile loaded and none of the APIs relying on that works. Setting the app pool to load the user profile has a negative impact on performance but can solve issues in some cases.
The web app itself is running in a non-interactive environment and therefore most APIs related to the UI will also not work. This appears to be what you might be doing here. You're trying to get the Shell object which may or may not be available. Posting the code you wrote that you are trying to get working would be helpful for us.
You mentioned a console app so I suspect you might be trying to start the process from a web app and it is then failing. That could just be related to you not passing the right startup options (or you might need to ensure the user profile for the app pool is loaded).