Как служба Windows может определить свой ServiceName?

на OS x это то же для меня..., это могло, возможно, быть дополнительным "\r" в окнах?

в любом случае можно быть лучше из с:

contents = File.read("e.tgz")
newFile = File.open("ee.tgz", "w")
newFile.write(contents)
34
задан NVRAM 8 December 2009 в 17:58
поделиться

2 ответа

От: https://connect.microsoft.com/VisualStudio/feedback /ViewFeedback.aspx?FeedbackID=387024

Вот решение WMI. Переопределение ServiceBase.ServiceMainCallback () также может работать, но, похоже, это работает для меня ...

    protected String GetServiceName()
    {
        // Calling System.ServiceProcess.ServiceBase::ServiceNamea allways returns
        // an empty string,
        // see https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=387024

        // So we have to do some more work to find out our service name, this only works if
        // the process contains a single service, if there are more than one services hosted
        // in the process you will have to do something else

        int processId = System.Diagnostics.Process.GetCurrentProcess().Id;
        String query = "SELECT * FROM Win32_Service where ProcessId = " + processId;
        System.Management.ManagementObjectSearcher searcher =
            new System.Management.ManagementObjectSearcher(query);

        foreach (System.Management.ManagementObject queryObj in searcher.Get()) {
            return queryObj["Name"].ToString();
        }

        throw new Exception("Can not get the ServiceName");
    } 
29
ответ дан 27 November 2019 в 17:09
поделиться

Точка входа ServiceMain (), которую должен реализовать каждый исполняемый файл службы, получает ServiceName в качестве первого входного аргумента.

Если вы пишете свою службу с использованием .NET, точка входа ServiceMain () .NET реализован для вас. ServiceName назначается при установке службы с использованием свойства ServiceProcess.ServiceBase.ServiceName. Если вы пытаетесь настроить службу .NET для поддержки динамических значений ServiceName, я не знаю, как получить доступ к фактическому ServiceName во время выполнения.

1
ответ дан 27 November 2019 в 17:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: