.vbs文件无法从Windows服务正常工作

时间:2013-11-29 05:41:18

标签: c++ vbscript windows-services

我在C ++中创建了一个Windows服务,它在特定事件上运行VBScript文件。当我在C ++中使用Win32应用程序执行此操作时,此方法正常,但在Windows服务中的工作方式不同。

CPP文件代码:

SHELLEXECUTEINFO ExecuteInfo;

memset(&ExecuteInfo, 0, sizeof(ExecuteInfo));

ExecuteInfo.cbSize       = sizeof(ExecuteInfo);
ExecuteInfo.fMask        = 0;                
ExecuteInfo.hwnd         = 0;                
ExecuteInfo.lpVerb       = _T("open");                      // Operation to perform
ExecuteInfo.lpFile       = _T("D:\\demo.vbs");  // Application name
ExecuteInfo.lpParameters = 0;           // Additional parameters
ExecuteInfo.lpDirectory  = 0;                           // Default directory
ExecuteInfo.nShow        = SW_SHOW;
ExecuteInfo.hInstApp     = 0;
if(ShellExecuteEx(&ExecuteInfo) == FALSE)
{
}

2 个答案:

答案 0 :(得分:0)

假设objShell.Windows是“Shell.Application”的一个实例,你得到的是msdn

  

ShellWindows对象:表示打开的窗口的集合   属于壳牌。与此对象关联的方法可以控制   并在Shell中执行命令,并获取其他与Shell相关的命令   对象。

关键部分是that belong to the Shell。您的问题是桌面上的shell与计算机中的服务所具有的shell不同。

服务在单独的会话中运行。

因此,您的脚本正常工作。它不会返回任何shell窗口,因为会话中没有人正在运行服务。

答案 1 :(得分:0)

我创建了一个普通的exe而不是windows服务,并将其添加到windows startup registory。 这样我就能达到预期目的。