Windows 服务从登录的用户 c# 开始
本文关键字:用户 开始 登录 服务 Windows | 更新日期: 2023-09-27 18:33:25
我做了一个Windows服务(它正在工作(,但它在系统用户上运行,我希望它在我当前的登录用户上运行。
这是我的服务安装程序类:
[RunInstaller(true)]
class CloudManagerServiceInstaller : Installer
{
public CloudManagerServiceInstaller()
{
var serviceInstaller = new ServiceInstaller();
var serviceProcessInstaller = new ServiceProcessInstaller();
serviceProcessInstaller.Account = System.ServiceProcess.ServiceAccount.User;
serviceProcessInstaller.Username = Environment.MachineName + "''carl";
serviceInstaller.DisplayName = "Z";
serviceInstaller.StartType = ServiceStartMode.Manual;
serviceInstaller.ServiceName = "Z";
this.Installers.Add(serviceInstaller);
this.Installers.Add(serviceProcessInstaller);
}
}
还有我的服务基础:
class CloudManagerServiceBase : ServiceBase
{
public int i = 0;
private System.Timers.Timer _timer;
private int m = 2;
public CloudManagerServiceBase()
{
this.ServiceName = "ZSCloudManager";
}
protected override void OnStart(string[] args)
{
base.OnStart(args);
_timer = new System.Timers.Timer(m * 60 * 1000); // every m minutes
_timer.Elapsed += _timer_Elapsed;
_timer.Start(); // <- important
}
void _timer_Elapsed(object sender, ElapsedEventArgs e)
{ do work }}
我在另一个程序的帮助下安装该服务。我可以这样编写服务还是必须遵循这些说明 -> http://blogs.msdn.com/b/winsdk/archive/2009/07/14/launching-an-interactive-process-from-windows-service-in-windows-vista-and-later.aspx如果是这种情况,那么您能否给我一个代码片段,因为我不完全理解这一点。
我放弃了手动操作,而是使用Visual Studio中的服务预设进行制作。我刚刚将其添加到预设中(在项目安装程序类中(:
public ProjectInstaller()
{
InitializeComponent();
serviceProcessInstaller1.Username = ".''" + Environment.UserName;
}
并将 属性帐户 从 serviceProcessInstaller 设置为 "user"。之后,您可以在服务类中添加代码。它对我来说效果很好。