Make sure you're solving a real problem
Dukeling is correct: when you encounter a post, you should strive to ensure that it complies with the current rules of the site, regardless of when it was asked. That doesn't necessarily mean you should flag or close though...
Whenever you're in this situation, it's critical that you familiarize yourself not just with the rules, but also the reasons for which those rules were created. In the case of recommendation questions, the reasons are simple:
- Many answers to such questions become obsolete very quickly. This isn't always the case though: it really depends on what is being requested.
- Very specific requirements can lead to a deceptively-narrow question, which can trick readers (and answerers) into clicking through when in fact the asker needs something too specific to his current situation for most folks to answer or for the answers to ever benefit anyone else.
- Without a specific problem to be solved, they attract spam like a dead rat attracts yellowjackets.
With this knowledge at hand, you can now evaluate each question on its specific merits - or lack thereof. Just because a question matches a few keywords doesn't make it a problem - or a rule violation. If you're looking at a question and thinking - as you did - "this isn't causing any problems" then that should be a red flag: you probably have a false positive.
What to do
Let's examine one of the questions you linked to:
Does anyone know of a tool that can take an in memory object (or JSON serialization of an object) and emit C# code to produce an equivalent object? This would be useful for pulling known good examples from a repository to use as starting points in unit tests. We have considered deserializing JSON, but C# code would have an edge when it comes to refactoring.
This is a common manifestation of an X-Y problem: the asker has a specific task to be accomplished, and assumes a tool already exists to accomplish this task. So he asks for the tool rather than a solution to the problem. Fortunately, he also states the problem: he's looking to reconstitute objects for the purpose of running tests.
Although this question looks like your average tool-rec question, that's not how it actually panned out: it seems this problem is fairly easy to solve with just a bit of code, so that's what the answerers provide.
As you can see, closing is not always an effective tool for handling these questions, particularly if you don't have vote-to-close privileges: as you've noticed, flags on old or obscure posts may languish for months or longer (indeed, we'll probably start aging these away at some point just to avoid the risk of skewing your flagging stats). I made a trivial edit to remove the "tool request" portion of this question, and see no reason why it needs anything more.
In general,
Editing is both faster and easier than closing these if the answers are reasonable.
Editing + spam-flagging is acceptable if there are a mix of reasonable answers and spam. Protecting the question is wise if a large number of spam answers have been attracted - you may also wish to use a custom moderator flag to draw attention to honeypots, in case they wish to do some larger-scale cleanup.
Close voting / flagging + down-voting the answers is wise if the answers are crap / obsolete / non-existent, particularly when the question is bereft of any actual problem problem statement: if it takes you more than a few seconds to think of an edit that would remove the "recommendation" part of the question while still leaving a reasonable question, then it's likely the question is unsalvageable.
In all cases, keep the problems outlined above firmly in mind: don't try to solve problems that don't exist.