Allen,

I have modified your code [adding the important Working Directory setting]:

 Code:
Function RunAsInteractiveUser($FQFN, optional $ARGUMENTS, optional $WORKDIR, optional $TASKNAME, optional $DONOTDELETE)
	Dim $SERVICE, $ROOTFOLDER, $TASKDEFINITION, $TRIGGERS, $TRIGGER, $ACTION, $SETTINGS
	Dim $TriggerTypeRegistration, $ActionTypeExecutable, $FlagTaskCreate, $LogonTypeInteractive

	? "TASK EXECUTE: " + $FQFN ?
	? "TASK ARGUMENTS: " + $ARGUMENTS ?
	? "TASK WORKING DIRECTORY: " + $WORKDIR ?
	? "TASK NAME: " + $TASKNAME ?
	? "TASK DELETE: " + $DONOTDELETE ?
	? "TASK USERNAME: " + $UPPERUSERNAME ?
	;$NUL = PAUSE(15)

	If $TASKNAME = ""
		$TASKNAME = "Run As Interactive User - " + @ticks
	EndIf

	$TriggerTypeRegistration = 7
	$ActionTypeExecutable = 0
	$FlagTaskCreate = 2
	$LogonTypeInteractive = 3

	If Exist($FQFN)
		$SERVICE = CreateObject("Schedule.Service")
		$SERVICE.Connect()
		$ROOTFOLDER = $SERVICE.GetFolder("\")
		$ROOTFOLDER.DeleteTask($TASKNAME, 0)
		$TASKDEFINITION = $SERVICE.NewTask(0)
		$TRIGGERS = $TASKDEFINITION.Triggers
		$TRIGGER = $TRIGGERS.Create($TriggerTypeRegistration)
		$SETTINGS = $TASKDEFINITION.Settings
		$SETTINGS.DisallowStartIfOnBatteries = NOT 1
		$SETTINGS.StopIfGoingOnBatteries = NOT 1
		$ACTION = $TASKDEFINITION.Actions.Create($ActionTypeExecutable)
		$ACTION.Path = $FQFN

		If Exist($ARGUMENTS)
			$Action.Arguments = '"' + $ARGUMENTS + '"'
		Else
			Exit 2
		EndIf

		If Exist($WORKDIR)
			$Action.WorkingDirectory = $WORKDIR
		Else
			Exit 2
		EndIf

		$RC = $ROOTFOLDER.RegisterTaskDefinition($TASKNAME, $TASKDEFINITION, $FlagTaskCreate,,, $LogonTypeInteractive)

		If NOT $DONOTDELETE
			Sleep 1
			$ROOTFOLDER.DeleteTask($TASKNAME, 0)
		EndIf
	Else
		Exit 2
	EndIf
EndFunction