在XP上显示来自交互式服务的HTML帮助(chm)

时间:2010-09-30 22:17:11

标签: windows-services chm

我有一个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);

1 个答案:

答案 0 :(得分:0)

终于找到了答案:

在注册表项下:

HKLM \ SOFTWARE \微软\的HTMLHelp \ 1.x的\ HHRestrictions

创建一个新的DWORD值键:

EnableNonInteractiveUser

并将值设置为1。

这将允许XP上的交互式服务进程显示HTML帮助。

如果您的服务进程已经运行,您可能需要重新启动它才能运行(需要这样做与否取决于您的程序运行时系统如何启动HTML帮助查看器 - 缓存结果意味着它可能不会工作直到重新开始。)

在此阶段,如果相同的更改适用于Vista,Win7或Win8,则我不知道。