Ever since the introduction of Terminal Services, "current user" can be plural. Even XP supports fast user switching.
The closest you can get is "user connected to the console session". For this, use WTSGetActiveConsoleSessionId() + WTSQueryUserToken() + CreateEnvironmentBlock() + CreateProcessAsUser().
I wrote this: https://gist.github.com/871048 – Compile, run with full path to your batch file as arguments.
Yes, this requires .NET Runtime, but it's likely that your systems already have it. The compiler's part of the Runtime, too:
%SystemRoot%\Microsoft.NET\Framework64\v3.5\csc.exe (any version starting with
v2.* will work).
Note: WTSQueryUserToken() requires the program to be running as LocalSystem. (According to the docs, SeTcbPrivilege is not enough, but I haven't checked.)