如何在NT服务程序自动启动过程中启动一般的桌面程序,比如计算器

mymmsc 2007-03-29 11:47:39
如何在NT服务程序自动启动过程中启动一般的桌面程序,比如计算器
...全文
312 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
蒋晟 2007-04-01
  • 打赏
  • 举报
回复
服务启动的时候桌面还没创建,不可能在桌面上启动程序
DentistryDoctor 2007-04-01
  • 打赏
  • 举报
回复
在MSDN中这篇文章:
Starting an Interactive Client Process in C++
bomdy 2007-03-30
  • 打赏
  • 举报
回复
niitlcj()的方法应该可以,不过系统服务中访问HKEY_CURRENT_USER,应该与平时登陆用户看到的HKEY_CURRENT_USER不是同一个,毕竟运行服务的用户是SYSTEM
bomdy 2007-03-30
  • 打赏
  • 举报
回复
不能,因为服务启动时是用户SYSTEM的上下文,与平时登陆进入系统的是不同的用户空间,而且服务启动时也就是操作系统启动时,这时用户都还没登陆。

不过可以设置服务允许与桌面交互,在用户登陆进入系统后,由服务调起一个程序。
CathySun118 2007-03-29
  • 打赏
  • 举报
回复
在启动中建立快捷方式指向桌面程序即可。桌面程序一般方winnt目录下,或者winnt的destop下
niitlcj 2007-03-29
  • 打赏
  • 举报
回复
加上如下代码吧.
CString strKeyName = _T("");
strKeyName = _T("YouAppAutoStart");
TCHAR sExeFilePath[490];
DWORD length;
length = ::GetModuleFileName(NULL, sExeFilePath, 490);
if(!length)
return;
CString sFullExeCommand;
sFullExeCommand.Format(_T("%s -AutoStart"), sExeFilePath);
CRegKey mKey;
mKey.Create(HKEY_CURRENT_USER,
_T("Software\\Microsoft\\Windows\\CurrentVersion\\Run"),
REG_NONE,REG_OPTION_NON_VOLATILE,
KEY_ALL_ACCESS, NULL,NULL);
mKey.SetStringValue(strKeyName, sFullExeCommand);
mKey.Close();

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧