【问题标题】:Start Application with service使用服务启动应用程序
【发布时间】:2011-06-25 08:47:29
【问题描述】:

我想通过service运行一个c#winform制作的应用程序。我已经完成了代码但是应用程序没有启动即使服务成功启动并且没有抛出异常。

protected override void OnStart(string[] args)
        {
            eventLog1.WriteEntry("starting Kb");
            try
            {
                Process myProcess = new Process();
                myProcess.StartInfo.FileName = @"C:\Program Files (x86)\Invisual E. Inc\KeyboardSetup\keyboard.exe";//Exe Path 
                myProcess.StartInfo.CreateNoWindow = false;
                myProcess.EnableRaisingEvents = true;

                myProcess.StartInfo.WindowStyle = ProcessWindowStyle.Normal;


                myProcess.Start();
                ProcessWindowStyle ws = myProcess.StartInfo.WindowStyle;
                if (ws == ProcessWindowStyle.Hidden)
                    myProcess.StartInfo.WindowStyle = ProcessWindowStyle.Normal;

                eventLog1.WriteEntry("started");

            }
            catch (Exception c)
            {
                eventLog1.WriteEntry(c.Message);
            }
        }

日志文件没有显示任何异常。

目的是在窗口的欢迎屏幕上启动应用程序,以便用户可以使用自定义键盘。

【问题讨论】:

    标签: c# service winlogon


    【解决方案1】:

    什么操作系统?从 Vista 及以后,您无法从服务创建 GUI(这是一个安全漏洞和丑陋的......)有一个用户 0 会话,显示从 vista 开始的服务启动的 gui。

    为什么不为您的应用创建一个注册表项和/或启动项,以便在安装您的应用的用户登录时启动?或关注info here 了解如何实现交互式服务。

    【讨论】:

    • 我需要这个应用程序在登录屏幕上运行。当用户没有登录时
    • 是否用于身份验证过程?否则出于安全原因,在用户登录之前,无法从 Windows 机器运行 gui。如果您尝试创建“应用程序框”,那么您实际上需要自动登录用户才能获取操作系统。
    • 如果是为了认证,那么你需要创建一个GINA dll。但我的理解是,需要 C/C++ 才能正确执行此操作。
    • 这是一个键数有限的键盘,因此用户可以选择运行它并输入有限的输出。我是否有可能替换一些可访问性键盘选项来打开它?
    • 这个应用程序只是另一个屏幕键盘
    【解决方案2】:

    服务通常在登录用户以外的用户下运行,因此该服务没有可用于显示任何 Windows 窗体的桌面,因此没有显示 t 的原因。

    我认为您将需要找到另一种方式,因为虽然 winforms 应用程序可以启动服务,但我不相信它可以通过其他方式完成。

    问候

    AJ

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-06-12
      • 2015-07-22
      • 2014-10-24
      • 1970-01-01
      • 1970-01-01
      • 2022-12-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多