MFC 执行外部.bat文件遇到的有关问题

MFC 执行外部.bat文件遇到的问题
MFC 执行外部.bat文件遇到的问题
.bat文件如下格式: 
taskkill /f /im explorer.exe (第一行)
... ... (多行操作,在此省略)
start explorer (最后一行)

手动双击运行.bat后,一切正常。
但是,每次用 ShellExecute(NULL,NULL,"C:\tmp.bat",NULL,NULL,SW_HIDE);执行该.bat文件后,
前面的操作都成功了,就是 .bat文件的最后一行没有起到我想要的作用,只是打开一个资源管理器窗口,但是系统桌面不可见,系统任务栏都不见了,必须要通过 任务管理器->新建任务->explorer 才能显示出原来的桌面和任务栏。

请问,有什么方法,可以在VC++中调用执行外部.bat实现 start explorer,桌面和任务栏等一切正常显示?
mfc vc++ c

------解决方案--------------------
试下这样
ShellExecute(NULL,"open","cmd.exe","/c C:\\tmp.bat",NULL,SW_HIDE);

------解决方案--------------------
需要在批处理中加入当前路径设置语句。
如果不加,bat将在程序所在目录寻找explorer.exe,肯定找不到呀。