我有一个C ++应用程序,可以选择在XP上作为Windows服务运行并与桌面交互(是的,我知道这是不好的做法,但它已经存在了很长时间!)
改进html帮助我发现HtmlHelp()
无法在服务中运行。我尝试使用CreateProcess()
和ShellExecute()
运行hh.exe但没有成功。另一方面,使用CreateProcess
运行Write工作正常,因此hh.exe必须有不同的内容。没有任何谷歌搜索光线。如何从服务启动chm文件?
PROCESS_INFORMATION ProcInfo;
STARTUPINFO si;
memset(&si, '\0', sizeof(STARTUPINFO));
si.cb = sizeof(STARTUPINFO);
//si.lpDesktop = "winsta0\\default"; // <-- doesn't make any difference
char *helpcmd = "hh.exe c:\\help\myhelpfile.chm";
BOOL bSuccess = ::CreateProcess(NULL, helpcmd, NULL, NULL, FALSE, 0, NULL, NULL, &si, &ProcInfo);
答案 0 :(得分:0)
终于找到了答案:
在注册表项下:
HKLM \ SOFTWARE \微软\的HTMLHelp \ 1.x的\ HHRestrictions
创建一个新的DWORD值键:
EnableNonInteractiveUser
并将值设置为1。
这将允许XP上的交互式服务进程显示HTML帮助。
如果您的服务进程已经运行,您可能需要重新启动它才能运行(需要这样做与否取决于您的程序运行时系统如何启动HTML帮助查看器 - 缓存结果意味着它可能不会工作直到重新开始。)
在此阶段,如果相同的更改适用于Vista,Win7或Win8,则我不知道。