Для взаимодействия с рабочим столом с помощью кода:
Поставьте это непосредственно перед запуском службы.
String sYourServiceName = @"MyService" //Change this to r service name
ConnectionOptions co = new ConnectionOptions();
co.Impersonation = ImpersonationLevel.Impersonate;
ManagementScope mgmtScope = new System.Management.ManagementScope(@"root\CIMV2", co);
mgmtScope.Connect();
ManagementObject wmiService;
wmiService = new ManagementObject("Win32_Service.Name='" + sYourServiceName + "'");
ManagementBaseObject InParam = wmiService.GetMethodParameters("Change");
InParam["DesktopInteract"] = true;
ManagementBaseObject OutParam = wmiService.InvokeMethod("Change", InParam, null);
или
Попробуйте запустить iexplore
"Internet Explorer"как системная учетная запись со страницы входа.Просто выполните Process.Start("Iexplore.exe")
из службы Windows, и она должна работать, но я не уверен, что вы можете выполнить iexplore
как учетную запись системного уровня.
В противном случае вы можете попытаться заблокировать экран блокировки, написавбазовый захватчик ключей или регистратор ключей для блокировки блокировки MENU+L
, вы можете сделать это, включив взаимодействие с рабочим столом.Я разместил код, чтобы упростить его или сделал это вручную, перейдя в сервисы и нажав на ваш сервис.Там вы должны увидеть флажок с текстом interact with desktop
.
// M