代码之家  ›  专栏  ›  技术社区  ›  Marko

来自NT服务的CreateProcess挂起

  •  0
  • Marko  · 技术社区  · 15 年前

    我正在尝试从NT服务进程启动sqlserver2008sp1 Express安装程序。进程启动成功,我可以在任务管理器中看到它,但它什么也不做,只是在我杀死它之前保持不活动状态。

    我用以下命令启动该过程:

     szCmdLine = "Setup.exe /Q /HIDECONSOLE /ACTION=install /CONFIGURATIONFILE=ConfigurationFile.ini /SAPWD=pwd_to_set");
    
     STARTUPINFO si;
     si.wShowWindow = SW_HIDE;
     ...
     CreateProcess(NULL, szCmdLine, NULL, NULL, TRUE, 
                   CREATE_NO_WINDOW, NULL, szPath, &si, &pi);
    

    从命令行手动启动时安装正常。

    我试着用各种各样的创建标记来进行处理,但没有运气。我的想法不多了,所以感谢你的帮助。

    请注意,对于SQL Server 2000安装,相同的代码也可以正常工作。我知道这是处理安装的一种奇怪的方式,但是现在改变它已经晚了。

    操作系统是Windows Server 2003 SP2。

    1 回复  |  直到 15 年前
        1
  •  0
  •   Marko    15 年前

    对自己的回应,仅供参考。 问题是调用了错误的setup.exe。虽然szpath指向正确的文件夹,但从Windows文件夹调用了setup.exe。

    修复方法是使用全名(包括directrory)调用setup.exe。