If you want it smaller, here's the program in assembly. Executable file has size of 1536 bytes.
.486 ; create 32 bit code
.model flat, stdcall ; 32 bit memory model
option casemap :none ; case sensitive
include \masm32\include\windows.inc
include \masm32\include\kernel32.inc
include \masm32\include\user32.inc
include \masm32\include\shell32.inc
includelib \masm32\lib\kernel32.lib
includelib \masm32\lib\shell32.lib
.code
start:
main proc
local commandLine:LPSTR
local numOfArgs:DWORD
local argsP:DWORD
local fileH:HANDLE
local currentSysTime:SYSTEMTIME
local newFileTime:FILETIME
invoke GetCommandLineW
mov commandLine, eax
invoke CommandLineToArgvW, commandLine, addr numOfArgs
mov argsP, eax
cmp numOfArgs, 2
jl failure
mov eax, argsP
mov ebx, [eax + 4]
invoke CreateFileW, ebx, FILE_READ_ATTRIBUTES+FILE_WRITE_ATTRIBUTES, FILE_SHARE_READ+FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL
mov fileH, eax
cmp eax, INVALID_HANDLE_VALUE
je failure
invoke GetSystemTime, addr currentSysTime
invoke SystemTimeToFileTime, addr currentSysTime, addr newFileTime
invoke SetFileTime, fileH, NULL, NULL, addr newFileTime
invoke ExitProcess, 0
failure:
invoke ExitProcess, -1
main endp
end start