启动流程的服务不会显示GUI C#

Cra*_*d22 11 c# service user-interface process

嘿,我正在尝试获得一项服务来启动我的程序,但它没有显示GUI.该过程开始但没有显示任何内容.我尝试启用"允许服务与桌面交互",但仍然无效.我的程序是一个计算机锁定设备,用于阻止未经授权的用户访问计算机.我正在运行带有64位操作系统的Windows 7.

这是我服务的代码:

        protected override void OnStart(string[] args)
    {
        Process p = new Process();
        p.StartInfo.FileName = "notepad.exe";
        p.Start();

        FileStream fs = new FileStream(@"C:\Users\David\Documents\Visual Studio 2010\Projects\LockPCService\LockPCService\bin\Debug\ServiceLog.dj",
        FileMode.OpenOrCreate, FileAccess.Write);
        StreamWriter m_streamWriter = new StreamWriter(fs);
        m_streamWriter.BaseStream.Seek(0, SeekOrigin.End);
        m_streamWriter.WriteLine(" LockPCService: Service Started " + DateTime.Now + "\n" + "\n");
        m_streamWriter.Flush();
        m_streamWriter.Close();
    }

    protected override void OnStop()
    {
        FileStream fs = new FileStream(@"C:\Users\David\Documents\Visual Studio 2010\Projects\LockPCService\LockPCService\bin\Debug\ServiceLog.dj",
        FileMode.OpenOrCreate, FileAccess.Write);
        StreamWriter m_streamWriter = new StreamWriter(fs);
        m_streamWriter.BaseStream.Seek(0, SeekOrigin.End);
        m_streamWriter.WriteLine(" LockPCService: Service Stopped " + DateTime.Now + "\n"); m_streamWriter.Flush();
        m_streamWriter.Close();
    }
Run Code Online (Sandbox Code Playgroud)

为了尝试让服务正常工作我正在使用notepad.exe.当我查看进程记事本正在运行但没有GUI.每次运行时,ServiceLog都在那里工作.

关于为什么这不起作用的任何想法?

谢谢.

Mat*_*ira 21

本文解释了Session 0 Isolation哪些不允许服务在Windows Vista/7中创建UI.在您的服务启动另一个进程时,它从会话0开始,也不会显示任何UI.(顺便说一下,创建了UI,只是永远不会显示Session 0).CodeProject上的这篇文章可以帮助您从用户桌面上的服务创建进程并显示其UI.

另外,请考虑将流对象包装在using语句中,以便正确处理它们.