Я разрабатываю удаленную библиотеку ключевых слов для фреймворка роботов.Эта библиотека работает в c # .net.
Удаленная библиотека построена с использованием NRobot-Server .Это относится к серверу xml-rpc и другим вещам, поэтому я могу писать только ключевые слова для фреймворка робота.К вашему сведению, этот сервер xml-rpc многопоточный.
На основании этого ответа и этой демонстрации Мне удалось что-то собрать,Однако я всегда получаю Cannot open <<my service>> service on computer '192.168.0.105'
Cannot open <<my service>> service on computer '192.168.0.105'.
at System.ServiceProcess.ServiceController.GetServiceHandle(Int32 desiredAccess)
at System.ServiceProcess.ServiceController.Stop()
at RKL.KeywordLibrary.KeywordLibraryImpl.ControlService(String host, String username, String password, String name, String action, String domain) in C:\Dev\QueueServiceSystemTestRKL\src\RKL\KeywordLibrary\KeywordLibraryImpl.cs:line 115
at RKL.KeywordLibrary.RklKeywordClass.ControlService(String h
ost, String username, String password, String name, String action) in C:\Dev\RKL\src\RKL\KeywordLibrary\RKLKeywordClass.cs:line 21
Поскольку я должен иметь возможность удаленного управления службами, среда разработки выглядит следующим образом:
------------------- --------------------
| OS X | | Win 10 |
| | | |
| robot framework | --> | remote keyword |
| | | library (C#) |
------------------- --------------------
|
|
v
---------------------
| Win Server 2019 |
| |
| service |
| |
---------------------
Фактический код выглядит следующим образом (Я использую SimpleImpersonation nuget )
public void ControlService(string host, string username, string password, string name, string action)
{
var credentials = new UserCredentials(username, password);
Impersonation.RunAsUser(credentials, SimpleImpersonation.LogonType.Interactive, () =>
{
ServiceController sc = new ServiceController(name, host);
TimeSpan timeout = new TimeSpan(0,0,30);
switch (action)
{
case "start":
sc.Start();
sc.WaitForStatus(ServiceControllerStatus.Running, timeout);
break;
case "stop":
sc.Stop();
sc.WaitForStatus(ServiceControllerStatus.Stopped, timeout);
break;
default:
string msg = String.Format("Unknown action: '{0}'", action);
throw new Exception(msg);
}
});
}
Кроме того, я создал testuser
на обеих машинах Windows, и оба пользователя являются администраторами.
В настоящее времяЯ пытаюсь отключить все окна безопасности, однако я мертв в воде.Просто пробую случайные вещи.
Кто-нибудь знает, где могут быть проблемы?Любая помощь будет оценена!