Timely bump on this thread as i just tried something new to try to keep the ”solar lights on” longer. In my experience, yes, the batteries are often lacking, but after fixing the battery, the next set of issues almost always have to do with corrosion at the connections. Corrosion on the battery terminals (both the battery itself and the contacts on the body of the light), corrosion and breakage of the flimsy wires connecting to the contacts in the light, and corrosion and failure of the on-off switch (if so equipped).
Here’s what i just started doing: Take the newly purchased light apart and spray silicone spray over the circuit board, switch, and battery contacts. I figure a good coat of silicone on the circuit board and elsewhere internally should forstall corrosion caused by moisture.
I’ll report back 5 years from now if this “treatment” is successful. I may take the lights apart yearly to re-treat them, or try some other protectants. : )