我正在使用C#编写一个应用程序,需要以服务的方式运行,同时还需要用户交互。我知道服务没有UI界面等等,因此我将程序分成了一个Windows窗体应用程序和一个可以相互通信的服务。
我遇到的问题是,我需要确保服务始终运行并在不运行时重新启动Windows窗体应用程序。我能够检测它是否正在运行,并使用以下代码在Windows 2000/XP上重新启动:
但在Vista上,它会将新进程作为本地/系统进程运行,对用户不可见。是否有什么方法可以解决这个问题?有没有办法检测当前登录的用户并将新进程作为该用户运行?目前我不需要考虑快速用户切换。任何基本的东西都可以。
如果您对此有任何帮助或提示,我将不胜感激。
我需要澄清的是,在安装服务时,我设置了“允许服务与桌面交互”选项。这就是它能够在2000 / XP上工作的原因。然而,在Vista上仍存在上述问题。
我遇到的问题是,我需要确保服务始终运行并在不运行时重新启动Windows窗体应用程序。我能够检测它是否正在运行,并使用以下代码在Windows 2000/XP上重新启动:
System.Diagnostics.Process.Start("ExePath");
但在Vista上,它会将新进程作为本地/系统进程运行,对用户不可见。是否有什么方法可以解决这个问题?有没有办法检测当前登录的用户并将新进程作为该用户运行?目前我不需要考虑快速用户切换。任何基本的东西都可以。
如果您对此有任何帮助或提示,我将不胜感激。
我需要澄清的是,在安装服务时,我设置了“允许服务与桌面交互”选项。这就是它能够在2000 / XP上工作的原因。然而,在Vista上仍存在上述问题。