NT 服务的 CreateProcess 挂起
Posted
技术标签:
【中文标题】NT 服务的 CreateProcess 挂起【英文标题】:CreateProcess from NT service hangs 【发布时间】:2010-04-20 14:26:54 【问题描述】:我正在尝试从 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);
从 cmdline 手动启动时安装正常。
我尝试为进程使用各种 creat 标志,但没有运气。我的想法已经用完了,因此感谢您的每一个帮助。
请注意,对于 SQL Server 2000 安装,相同的代码也可以正常工作。而且我知道这是处理安装的一种奇怪方式,但要改变它为时已晚。
操作系统是 Windows Server 2003 SP2。
【问题讨论】:
什么操作系统? Windows Server 2003 还是 Windows Server 2008? 【参考方案1】:回复自己,仅供参考。 问题是调用了错误的 Setup.exe。虽然 szPath 指向了正确的文件夹,但调用了 windows 文件夹中的 Setup.exe。
修复方法是使用全名(包括目录)调用 Setup.exe。
【讨论】:
以上是关于NT 服务的 CreateProcess 挂起的主要内容,如果未能解决你的问题,请参考以下文章