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如果是这种情况,那么您能否给我一个代码片段,因为我不完全理解这一点。

Windows 服务从登录的用户 c# 开始

我放弃了手动操作,而是使用Visual Studio中的服务预设进行制作。我刚刚将其添加到预设中(在项目安装程序类中(:

public ProjectInstaller()
{
    InitializeComponent();
    serviceProcessInstaller1.Username = ".''" + Environment.UserName;
}

并将 属性帐户 从 serviceProcessInstaller 设置为 "user"。之后,您可以在服务类中添加代码。它对我来说效果很好。