{"id":333152,"date":"2022-05-16T03:00:15","date_gmt":"2022-05-16T03:00:15","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=333152"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=333152","title":{"rendered":"<span>\u041f\u043e\u043b\u0443\u0444\u0430\u0431\u0440\u0438\u043a\u0430\u0442 Windows-\u0441\u043b\u0443\u0436\u0431\u044b<\/span>"},"content":{"rendered":"<div><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-1\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\u041e\u0434\u0438\u043d \u0438\u0437 \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432 \u0434\u043e\u043c\u043e\u0440\u043e\u0449\u0435\u043d\u043d\u043e\u0439 \u043a\u043b\u0430\u0441\u0441\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0441\u043b\u0443\u0436\u0431 \u043e\u0441\u043d\u043e\u0432\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0438\u0445 \u0436\u0438\u0437\u043d\u0438: \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0437 \u043d\u0438\u0445 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u044e\u0442\u0441\u044f \u0441\u0440\u0430\u0437\u0443 \u0436\u0435 \u043f\u0440\u0438 \u0441\u0442\u0430\u0440\u0442\u0435 <abbr title=\"\u041e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0421\u0438\u0441\u0442\u0435\u043c\u044b\">\u041e\u0421<\/abbr>, \u043e\u0441\u0442\u0430\u0432\u0430\u044f\u0441\u044c \u0430\u043a\u0442\u0438\u0432\u043d\u044b\u043c\u0438 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e (\u0441\u044e\u0434\u0430, \u0441\u043a\u0430\u0436\u0435\u043c, \u043c\u043e\u0436\u043d\u043e \u043e\u0442\u043d\u0435\u0441\u0442\u0438 \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440\u044b \u0438 \u0421\u0423\u0411\u0414), \u0434\u0440\u0443\u0433\u0438\u0435 \u0436\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u044e\u0442\u0441\u044f \u043b\u0438\u0448\u044c \u043f\u0440\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438, \u0434\u0435\u043b\u0430\u044e\u0442 \u0441\u0432\u043e\u0438 \u0430\u0440\u0445\u0438\u0432\u0430\u0436\u043d\u044b\u0435 \u0434\u0435\u043b\u0430 \u0438 \u0441\u0440\u0430\u0437\u0443 \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u044e\u0442\u0441\u044f; \u043f\u0440\u0438 \u044d\u0442\u043e\u043c, \u043d\u0438 \u043e\u0434\u0438\u043d \u0438\u0437 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432 \u0441\u0430\u043c \u043f\u043e \u0441\u0435\u0431\u0435 \u043d\u0435 \u0434\u0435\u043b\u0430\u0435\u0442 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u0441\u043b\u0443\u0436\u0431\u044b \u0441\u043b\u043e\u0436\u043d\u0435\u0435, \u043e\u0434\u043d\u0430\u043a\u043e \u0432\u0442\u043e\u0440\u043e\u0439 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u043e\u0442 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 \u043a\u0430\u043a \u043c\u0438\u043d\u0438\u043c\u0443\u043c \u0435\u0449\u0451 \u0438 \u0443\u043c\u0435\u043d\u0438\u044f <i>\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e<\/i> \u0441\u0442\u0430\u0440\u0442\u043e\u0432\u0430\u0442\u044c, \u0430 \u043f\u0440\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0438 \u0434\u043e\u0441\u0440\u043e\u0447\u043d\u043e \u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c \u0435\u0451 \u0440\u0430\u0431\u043e\u0442\u0443. \u0418\u043c\u0435\u043d\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0439 \u0430\u0441\u043f\u0435\u043a\u0442 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u043b\u0443\u0436\u0431\u043e\u0439, \u043f\u043b\u044e\u0441 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u0432 \u0448\u0442\u0430\u0442\u043d\u043e\u0439 \u043f\u043e\u0441\u0442\u0430\u0432\u043a\u0435 Delphi \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439, \u0438 \u0441\u043f\u043e\u0434\u0432\u0438\u0433 \u0430\u0432\u0442\u043e\u0440\u0430 \u043d\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u043e\u043f\u0443\u0441.<\/p>\n<p>  \u0427\u0442\u043e\u0431\u044b \u0441\u0442\u0430\u0442\u044c\u044f \u0432\u043e\u0441\u043f\u0440\u0438\u043d\u0438\u043c\u0430\u043b\u0430\u0441\u044c \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0439 \u0438 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u043d\u043e\u0439, \u0432 \u043d\u0435\u0439 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u0437\u0430\u0433\u043e\u0442\u043e\u0432\u043a\u0430 (\u043f\u043e\u0447\u0442\u0438 \u0433\u043e\u0442\u043e\u0432\u044b\u0439 \u043a \u0443\u043f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u044e \u0448\u0430\u0431\u043b\u043e\u043d) \u0441\u043b\u0443\u0436\u0431\u044b, \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044e\u0449\u0435\u0439 <i>\u043e\u0447\u0435\u0440\u0435\u0434\u044c \u043d\u0435\u043a\u0438\u0445 \u0437\u0430\u0434\u0430\u0447<\/i> (\u0438\u043b\u0438 \u0437\u0430\u0434\u0430\u043d\u0438\u0439 \u2013 \u043a\u043e\u043c\u0443 \u043a\u0430\u043a \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f); \u043f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0432\u0441\u0435 \u0438\u0437 \u043d\u0438\u0445 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u044b, \u0441\u043b\u0443\u0436\u0431\u0430 \u0442\u0443\u0442 \u0436\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u0435\u0442\u0441\u044f. \u0415\u0441\u043b\u0438 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438, \u0442\u043e \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044c \u043f\u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u0441\u044f \u0441\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0435\u0439:<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/_c\/py\/ow\/_cpyow-dhh-ao2ogijqlzrzxn5s.png\" alt=\"\u0412\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u0441\u043b\u0443\u0436\u0431\u044b \u0441 \u043e\u0447\u0435\u0440\u0435\u0434\u044c\u044e \u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043c\" width=\"600\" data-src=\"https:\/\/habrastorage.org\/webt\/_c\/py\/ow\/_cpyow-dhh-ao2ogijqlzrzxn5s.png\"\/><\/div>\n<p><a name=\"habracut\"><\/a>  <\/p>\n<h2>\u0422\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0437\u0430\u0434\u0430\u043d\u0438\u0435<\/h2>\n<p>  \u041f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0431\u0443\u0434\u0435\u0442 \u043e\u0431\u043b\u0430\u0434\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u043c\u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044f\u043c\u0438, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435:<\/p>\n<ul>\n<li><a name=\"Queue_requirements\"><\/a><b>\u041e\u0447\u0435\u0440\u0435\u0434\u044c<\/b> \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u043d\u0435\u043a\u0430\u044f <i>\u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0442\u043d\u0430\u044f<\/i> \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430, \u0442\u043e \u0435\u0441\u0442\u044c \u043a\u0435\u043c \u043e\u043d\u0430 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u0430, \u0433\u0434\u0435 \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f (\u0432 \u0444\u0430\u0439\u043b\u0435, \u0411\u0414 \u0438\u043b\u0438 \u0433\u0434\u0435-\u0442\u043e \u0435\u0449\u0451) \u0438 \u043a\u0430\u043a \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e \u0441 \u043d\u0435\u0439 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c (\u0432 \u0432\u0438\u0434\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430) \u2013 \u0432\u0441\u0451 \u044d\u0442\u043e \u043d\u0435\u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0438\u0430\u043b\u044c\u043d\u043e \u0438 \u0441\u043b\u0430\u0431\u043e \u043f\u0435\u0440\u0435\u0441\u0435\u043a\u0430\u0435\u0442\u0441\u044f \u0441 \u0442\u0435\u043c\u043e\u0439 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430, \u043e\u0434\u043d\u0430\u043a\u043e \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u0437\u0430\u0434\u0430\u0447\u0438 \u0432 \u043d\u0435\u0439 \u043e\u0431\u043b\u0430\u0434\u0430\u044e\u0442 \u043a\u0430\u043a \u043c\u0438\u043d\u0438\u043c\u0443\u043c \u0434\u0432\u0443\u043c\u044f \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430\u043c\u0438:<br \/> \n<ul>\n<li><a name=\"Task_priority_property\"><\/a>\u041f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u043e\u043c, \u0437\u0430\u0434\u0430\u044e\u0449\u0438\u043c \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438.<\/li>\n<li><a name=\"Task_status_property\"><\/a>\u0421\u0442\u0430\u0442\u0443\u0441\u043e\u043c, \u0434\u043e\u043f\u0443\u0441\u043a\u0430\u044e\u0449\u0438\u043c \u0442\u0440\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f:<br \/> \n<ol>\n<li>\u041e\u0436\u0438\u0434\u0430\u0435\u0442 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438.<\/li>\n<li>\u0423\u0441\u043f\u0435\u0448\u043d\u043e \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u0430.<\/li>\n<li>\u041e\u0448\u0438\u0431\u043a\u0430 (\u043d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c).<\/li>\n<\/ol>\n<\/li>\n<\/ul>\n<\/li>\n<li><a name=\"Service_requirements\"><\/a><b>\u0421\u043b\u0443\u0436\u0431\u0430<\/b>:<br \/> \n<ul>\n<li>\u0421\u0440\u0430\u0437\u0443 \u043f\u043e\u0441\u043b\u0435 \u0441\u0442\u0430\u0440\u0442\u0430 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442\u0441\u044f \u0437\u0430 \u0442\u044f\u0436\u043a\u0438\u0435 \u0442\u0440\u0443\u0434\u044b \u0438 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442, \u0441 \u0443\u0447\u0451\u0442\u043e\u043c \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u0430, \u0438\u0437\u0432\u043b\u0435\u043a\u0430\u0442\u044c \u0438\u0437 \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u0437\u0430\u0434\u0430\u0447\u0438 \u0441 \u043f\u0435\u0440\u0432\u044b\u043c \u0441\u0442\u0430\u0442\u0443\u0441\u043e\u043c (\u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u00ab\u043e\u0436\u0438\u0434\u0430\u044e\u0449\u0438\u0439\u00bb), \u043f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e, \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438, \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u0442 \u0441\u0442\u0430\u0442\u0443\u0441 \u0443 \u043a\u0430\u0436\u0434\u043e\u0439 \u0438\u0437 \u043d\u0438\u0445; \u0440\u0430\u0431\u043e\u0442\u0430 \u043f\u0440\u0435\u043a\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0432 \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u043d\u0435 \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u043d\u0435\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u044b\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432.<\/li>\n<li><a name=\"Service_stop_command\"><\/a>\u0415\u0441\u043b\u0438 \u043f\u043e\u0441\u0442\u0443\u043f\u0430\u0435\u0442 \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u043d\u0430 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443, \u0442\u043e \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0437\u0430\u0434\u0430\u0447\u0438 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0438 \u0441\u043b\u0443\u0436\u0431\u0430 \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u0435\u0442\u0441\u044f.<\/li>\n<li>\u0412\u043e \u0432\u0440\u0435\u043c\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u043d\u044f\u0442\u044c \u043e\u0441\u043e\u0431\u0443\u044e (\u043d\u0435\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0443\u044e) \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u043e\u0442 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0435\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f (\u0423\u041f), \u0441\u0443\u0442\u044c \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043e\u043f\u0438\u0441\u0430\u043d\u0430 \u0447\u0443\u0442\u044c \u043d\u0438\u0436\u0435.<\/li>\n<li>\u0414\u0430\u0431\u044b \u043d\u0435 \u043d\u0430\u0434\u0435\u043b\u044f\u0442\u044c \u0441\u043b\u0443\u0436\u0431\u0443 \u0447\u0440\u0435\u0437\u043c\u0435\u0440\u043d\u044b\u043c \u043d\u0430\u0431\u043e\u0440\u043e\u043c \u043f\u0440\u0430\u0432, \u0438\u0437-\u0437\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0441\u0442\u0440\u0430\u0434\u0430\u0442\u044c \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c \u0432\u0441\u0435\u0439 \u041e\u0421, \u0432\u043c\u0435\u0441\u0442\u043e \u043e\u0431\u044b\u0447\u043d\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u043c\u043e\u0433\u043e \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0430 <a href=\"https:\/\/docs.microsoft.com\/en-us\/windows\/win32\/services\/localsystem-account\" rel=\"nofollow noopener noreferrer\">LocalSystem<\/a> \u0441\u0442\u0430\u043d\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c, \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0435\u043c\u044b\u0439 \u043d\u0430 \u043b\u0435\u0442\u0443.<\/li>\n<li>\u041f\u0440\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 <i>\u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e<\/i> \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0445 \u043f\u0440\u0430\u0432 \u043a\u0430\u043a \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0441\u0430\u043c\u043e\u0439 \u0441\u043b\u0443\u0436\u0431\u044b (\u043e\u0442 \u0438\u043c\u0435\u043d\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043e\u043d\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c\u0441\u044f \u2013 \u043e \u043d\u0451\u043c \u0448\u043b\u0430 \u0440\u0435\u0447\u044c \u0432 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u043c \u043f\u0443\u043d\u043a\u0442\u0435), \u0442\u0430\u043a \u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0435\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f.<\/li>\n<\/ul>\n<\/li>\n<li><a name=\"Control_application_requirements\"><\/a><b>\u0423\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0435\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435<\/b>:<br \/> \n<ul>\n<li>\u041f\u043e\u0434\u0430\u0451\u0442 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u043d\u0430 \u0437\u0430\u043f\u0443\u0441\u043a \u0438 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443 \u0441\u043b\u0443\u0436\u0431\u044b, \u0442.\u00a0\u0435. \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0442\u043e, \u0447\u0442\u043e \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u0434\u0435\u043b\u0430\u0435\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 \u0414\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440 \u0441\u043b\u0443\u0436\u0431:\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/a8\/zp\/1c\/a8zp1cagzbfes6doyw4qrl_xkaw.png\" alt=\"\u041a\u043d\u043e\u043f\u043a\u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u043b\u0443\u0436\u0431\u043e\u0439 \u0432 \u0414\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u0435\" width=\"550\" data-src=\"https:\/\/habrastorage.org\/webt\/a8\/zp\/1c\/a8zp1cagzbfes6doyw4qrl_xkaw.png\"\/><\/div>\n<\/li>\n<li><a name=\"Control_application_reset_errors_command\"><\/a>\u0422\u0430\u043a\u0436\u0435, \u043a\u043e\u0433\u0434\u0430 \u0441\u043b\u0443\u0436\u0431\u0430 <i>\u0443\u0436\u0435 \u0430\u043a\u0442\u0438\u0432\u043d\u0430<\/i>, \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0434\u0430\u0442\u044c \u0435\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u0437\u0430\u043d\u043e\u0432\u043e \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u00ab\u043e\u0448\u0438\u0431\u043e\u0447\u043d\u044b\u0435\u00bb \u0437\u0430\u0434\u0430\u0447\u0438 (\u0442\u0435, \u0447\u0442\u043e \u0441 <a href=\"#Task_status_property\">\u0442\u0440\u0435\u0442\u044c\u0438\u043c \u0441\u0442\u0430\u0442\u0443\u0441\u043e\u043c<\/a>) \u2013 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c \u0432 \u044d\u0442\u043e\u043c \u043e\u0431\u044b\u0447\u043d\u043e \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u043f\u043e\u0441\u043b\u0435 \u0443\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0432\u043d\u0435\u0448\u043d\u0438\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c, \u043f\u043e\u043c\u0435\u0448\u0430\u0432\u0448\u0438\u0445 \u0448\u0442\u0430\u0442\u043d\u043e \u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c\u0441\u044f \u0441 \u0442\u0430\u043a\u0438\u043c\u0438 \u0437\u0430\u0434\u0430\u0447\u0430\u043c\u0438 \u0432 \u043f\u0440\u043e\u0448\u043b\u043e\u043c.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>  <\/p>\n<h2>\u0421\u043b\u0443\u0436\u0431\u0430<\/h2>\n<p>  \u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u0432\u0435\u0441\u043a\u0438\u0445 \u043f\u0440\u0438\u0447\u0438\u043d \u0438\u0437\u043e\u0431\u0440\u0435\u0442\u0430\u0442\u044c \u0432\u0435\u043b\u043e\u0441\u0438\u043f\u0435\u0434 \u0434\u043b\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0441\u043b\u0443\u0436\u0431\u044b \u043d\u0435 \u0438\u043c\u0435\u0435\u0442\u0441\u044f, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043e\u0441\u043d\u043e\u0432\u0430 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u0433\u043e \u043a\u043e\u0434\u0430 \u2013 \u044d\u0442\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u0434\u043b\u044f IDE \u043f\u043e\u0434\u0445\u043e\u0434 \u043a \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044e, \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043d\u0430 \u043a\u043b\u0430\u0441\u0441\u0435 <code><a href=\"http:\/\/docwiki.embarcadero.com\/Libraries\/Berlin\/en\/Vcl.SvcMgr.TService\" rel=\"nofollow noopener noreferrer\">TService<\/a><\/code>. \u0422\u0430\u043a\u0436\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u0430\u0432\u0442\u043e\u0440 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043d\u0435 \u0441\u0430\u043c\u0443\u044e \u043d\u043e\u0432\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e Delphi (10.1 Berlin), \u0432 \u0441\u0432\u044f\u0437\u0438 \u0441 \u0447\u0435\u043c \u0432 \u0438\u043d\u044b\u0445 \u0432\u044b\u043f\u0443\u0441\u043a\u0430\u0445 \u043c\u043e\u0433\u0443\u0442 \u0438\u043c\u0435\u0442\u044c\u0441\u044f \u0441\u0432\u043e\u0438 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438 (\u0432 \u0431\u043e\u043b\u0435\u0435 \u0441\u0432\u0435\u0436\u0438\u0445, \u043a \u043f\u0440\u0438\u043c\u0435\u0440\u0443, \u0447\u0430\u0441\u0442\u044c \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u0433\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u0430 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0443\u0436\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u0430, \u043e\u0434\u043d\u0430\u043a\u043e \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0435 \u043c\u0430\u043b\u043e\u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e, \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u044f \u0441\u0442\u043e\u0439\u043a\u043e\u0435 \u043d\u0435\u0436\u0435\u043b\u0430\u043d\u0438\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 Delphi \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u0442\u044c <code>TService<\/code>).<\/p>\n<p>  \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043a\u043e\u0434\u0430 \u0441\u043b\u0443\u0436\u0431\u044b \u043b\u043e\u0433\u0438\u0447\u043d\u043e \u0432\u0435\u0441\u0442\u0438 \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441 \u0446\u0438\u043a\u043b\u043e\u043c \u0435\u0451 \u0436\u0438\u0437\u043d\u0438 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u2013 \u0442\u043e \u0435\u0441\u0442\u044c \u043d\u0430\u0447\u0430\u0442\u044c \u0441 \u043c\u043e\u043c\u0435\u043d\u0442\u0430 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 (\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438).<\/p>\n<h3>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430<\/h3>\n<p>  \u0421\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044e \u0438 \u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f, \u0442.\u00a0\u043a. \u0437\u0430\u043f\u0443\u0441\u043a \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u0441\u043b\u0443\u0436\u0431\u044b \u0441 \u043a\u043b\u044e\u0447\u043e\u043c <i><a href=\"http:\/\/docwiki.embarcadero.com\/Libraries\/Berlin\/en\/Vcl.SvcMgr.TServiceApplication\" rel=\"nofollow noopener noreferrer\">\/install<\/a><\/i> \u0441\u0434\u0435\u043b\u0430\u0435\u0442 \u0432\u0441\u0451 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0435 \u2013 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442 \u043e\u0442 \u0434\u0430\u043d\u043d\u043e\u0439 \u0440\u0443\u0442\u0438\u043d\u044b \u0438\u0437\u0431\u0430\u0432\u043b\u0435\u043d. \u041d\u0430\u043c\u043d\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0435\u0439 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043c\u043e\u043c\u0435\u043d\u0442 \u0441\u0440\u0430\u0437\u0443 \u043f\u043e\u0441\u043b\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 (\u0447\u0435\u043c\u0443 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0441\u043e\u0431\u044b\u0442\u0438\u0435 <code><a href=\"http:\/\/docwiki.embarcadero.com\/Libraries\/Berlin\/en\/Vcl.SvcMgr.TService.AfterInstall\" rel=\"nofollow noopener noreferrer\">AfterInstall<\/a><\/code>), \u0433\u0434\u0435 \u0438 \u0443\u0434\u043e\u0431\u043d\u043e \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u0442\u044c \u043a \u0432\u043e\u043f\u043b\u043e\u0449\u0435\u043d\u0438\u044e \u0447\u0430\u0441\u0442\u0438 \u043e\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u043e\u0433\u043e \u0432 <abbr title=\"\u0422\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u043e\u043c \u0417\u0430\u0434\u0430\u043d\u0438\u0438\">\u0422\u0417<\/abbr>; \u043e\u0434\u043d\u0430\u043a\u043e, \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0431\u044b \u043d\u0430\u0447\u0430\u0442\u044c \u0441 \u043c\u0430\u043b\u043e\u0433\u043e \u0438 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u043d\u0430 \u043f\u0440\u043e\u0441\u0442\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043a\u0430\u043a \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u043e\u0439 \u0441\u043b\u0443\u0436\u0431\u044b \u2013 \u0431\u0443\u0434\u0435\u0442 \u0441\u0434\u0435\u043b\u0430\u043d\u043e \u0442\u043e, \u0447\u0435\u0433\u043e \u0443\u0436\u0435 \u0442\u0430\u043a \u0434\u0430\u0432\u043d\u043e \u043d\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044e\u0442 \u0432 Delphi \u2013 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u0430 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0443\u043a\u0430\u0437\u0430\u0442\u044c <i>\u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435<\/i>, \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u043c\u043e\u0435, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432 \u0414\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u0435:<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/2y\/wz\/og\/2ywzogapnw4dk3rsui_9pgkazjq.png\" alt=\"\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0441\u043b\u0443\u0436\u0431\u044b \u0432 \u0414\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u0435\" width=\"400\" data-src=\"https:\/\/habrastorage.org\/webt\/2y\/wz\/og\/2ywzogapnw4dk3rsui_9pgkazjq.png\"\/><\/div>\n<p>  \u041e\u0441\u043d\u043e\u0432\u0430 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0433\u043e \u0441\u043e\u0431\u044b\u0442\u0438\u044f, \u043f\u043e\u0441\u0442\u0435\u043f\u0435\u043d\u043d\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0435\u043c\u0430\u044f \u0434\u0430\u043b\u0435\u0435, \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a:<\/p>\n<pre><code class=\"delphi\">interface  uses   System.SysUtils, Vcl.SvcMgr;  ...  implementation  uses   Winapi.WinSvc;  resourcestring   ServiceDescription = '\u0428\u0430\u0431\u043b\u043e\u043d (\u0437\u0430\u0433\u043e\u0442\u043e\u0432\u043a\u0430) \u0441\u043b\u0443\u0436\u0431\u044b, \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044e\u0449\u0435\u0439 \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u043d\u0435\u043a\u0438\u0445 \u0437\u0430\u0434\u0430\u0447.';  procedure TQueueService.ServiceAfterInstall(Sender: TService); var   ManagerHandle, ServiceHandle: SC_HANDLE;   Description: SERVICE_DESCRIPTION; begin   ManagerHandle := OpenSCManager(nil, nil, 0);    if ManagerHandle = 0 then     RaiseLastOSError;    try     ServiceHandle := OpenService( ManagerHandle, PChar(Name), SERVICE_CHANGE_CONFIG );      if ServiceHandle = 0 then       RaiseLastOSError;      try       Description.lpDescription := PChar(ServiceDescription);       Win32Check( ChangeServiceConfig2(ServiceHandle, SERVICE_CONFIG_DESCRIPTION, @Description) );     finally       CloseServiceHandle(ServiceHandle);     end;   finally     CloseServiceHandle(ManagerHandle);   end; end;<\/code><\/pre>\n<p>  \u0417\u0434\u0435\u0441\u044c, \u043f\u0440\u0435\u0436\u0434\u0435 \u0432\u0441\u0435\u0433\u043e, \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440\u0430 \u041c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u0430 \u0441\u043b\u0443\u0436\u0431 (<a href=\"https:\/\/docs.microsoft.com\/en-us\/windows\/win32\/services\/service-control-manager\" rel=\"nofollow noopener noreferrer\">Service Control Manager<\/a>), \u043f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u0443 \u043d\u0435\u0433\u043e \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440 \u0443\u0436\u0435 \u043d\u0430\u0448\u0435\u0439 (\u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0442\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u043e\u0439) \u0441\u043b\u0443\u0436\u0431\u044b \u043f\u043e \u0435\u0451 \u0438\u043c\u0435\u043d\u0438; \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043e\u0431\u043e\u0438\u043c \u043e\u0431\u044a\u0435\u043a\u0442\u0430\u043c \u0432\u044b\u0431\u0440\u0430\u043d \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0439 \u2013 <code><a href=\"https:\/\/docs.microsoft.com\/en-us\/windows\/win32\/services\/service-security-and-access-rights#access-rights-for-the-service-control-manager\" rel=\"nofollow noopener noreferrer\">SC_MANAGER_CONNECT<\/a><\/code> \u0438 <code><a href=\"https:\/\/docs.microsoft.com\/en-us\/windows\/win32\/services\/service-security-and-access-rights#access-rights-for-a-service\" rel=\"nofollow noopener noreferrer\">SERVICE_CHANGE_CONFIG<\/a><\/code>, \u043f\u0440\u0438\u0447\u0451\u043c <code>SC_MANAGER_CONNECT<\/code> \u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c, \u0442. \u043a. \u043e\u043d \u043f\u043e\u0434\u0440\u0430\u0437\u0443\u043c\u0435\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0435\u044f\u0432\u043d\u043e (\u0438\u043c\u0435\u043d\u043d\u043e \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <code><a href=\"https:\/\/docs.microsoft.com\/en-us\/windows\/win32\/api\/winsvc\/nf-winsvc-openscmanagerw\" rel=\"nofollow noopener noreferrer\">OpenSCManager<\/a><\/code> \u0440\u0430\u0432\u0435\u043d \u043d\u0443\u043b\u044e).<\/p>\n<h4>\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c<\/h4>\n<p>  \u0414\u0430\u043b\u0435\u0435, \u0447\u0442\u043e\u0431\u044b \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043a \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0445 \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 <a href=\"#Service_requirements\">\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u0439<\/a>, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043c\u0441\u044f \u0441 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c, \u043e\u0442 \u0438\u043c\u0435\u043d\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0441\u043b\u0443\u0436\u0431\u0430 \u0441\u0442\u0430\u043d\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c\u0441\u044f: \u0434\u043e Windows\u00a07 \u0438 Windows Server 2008\u00a0R2, \u0435\u0441\u043b\u0438 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u043e\u0441\u044c \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0442\u044c \u0441\u043b\u0443\u0436\u0431\u0443 \u0432 \u043f\u0440\u0430\u0432\u0430\u0445, \u0434\u0430\u0432 \u0435\u0439 \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0442\u0435, \u0447\u0442\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0443\u0436\u043d\u044b, \u0431\u044b\u043b\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043e\u0431\u044b\u0447\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u041e\u0421 \u2013 \u0430 \u0442\u0435\u043f\u0435\u0440\u044c \u0436\u0435 \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f <a href=\"https:\/\/docs.microsoft.com\/en-us\/previous-versions\/windows\/it-pro\/windows-server-2008-r2-and-2008\/dd367859(v=ws.10)\" rel=\"nofollow noopener noreferrer\">\u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c<\/a> (virtual account), \u0432\u0441\u0435 \u0437\u0430\u0431\u043e\u0442\u044b \u043f\u043e \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044e \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0431\u0435\u0440\u0451\u0442 \u043d\u0430 \u0441\u0435\u0431\u044f Windows. \u041f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043a \u0441\u043b\u0443\u0436\u0431\u0435 (\u0435\u0441\u043b\u0438 \u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u0447\u0435\u0440\u0435\u0437 \u0414\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440), \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0442\u0430\u043a\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u043d\u0443\u0436\u043d\u043e \u043b\u0438\u0448\u044c \u043f\u0440\u0438 \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u0438 \u0435\u0433\u043e \u0438\u043c\u0435\u043d\u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043f\u0440\u0435\u0444\u0438\u043a\u0441 <i>NT Service\\<\/i>, \u0430 \u043f\u0430\u0440\u043e\u043b\u044c \u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043f\u0443\u0441\u0442\u044b\u043c:<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/gy\/fy\/vi\/gyfyvit4mpbb8sy9eqgeol7uobc.png\" alt=\"\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0447\u0435\u0440\u0435\u0437 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u0441\u043b\u0443\u0436\u0431\u044b \u0432 \u0414\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u0435\" width=\"350\" data-src=\"https:\/\/habrastorage.org\/webt\/gy\/fy\/vi\/gyfyvit4mpbb8sy9eqgeol7uobc.png\"\/><\/div>\n<p>  \u041a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0431\u044b, \u0447\u0435\u0433\u043e \u043f\u0440\u043e\u0449\u0435 \u2013 \u0434\u0435\u0439\u0441\u0442\u0432\u0443\u0435\u043c \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e \u0432 \u0418\u043d\u0441\u043f\u0435\u043a\u0442\u043e\u0440\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 Delphi \u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0442\u043e\u0442 \u0436\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442:<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/y4\/xo\/4o\/y4xo4okhz0lxvdanscdplzf3kr8.png\" alt=\"\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0447\u0435\u0440\u0435\u0437 \u0418\u043d\u0441\u043f\u0435\u043a\u0442\u043e\u0440 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0432 Delphi\" width=\"250\" data-src=\"https:\/\/habrastorage.org\/webt\/y4\/xo\/4o\/y4xo4okhz0lxvdanscdplzf3kr8.png\"\/><\/div>\n<p>  \u041d\u043e \u043d\u0435 \u0442\u0443\u0442-\u0442\u043e \u0431\u044b\u043b\u043e! \u0412 \u0441\u043b\u0443\u0447\u0430\u0435 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, WinAPI-\u0444\u0443\u043d\u043a\u0446\u0438\u044f <code><a href=\"https:\/\/docs.microsoft.com\/en-us\/windows\/win32\/api\/winsvc\/nf-winsvc-createservicew\" rel=\"nofollow noopener noreferrer\">CreateService<\/a><\/code>, \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u043c\u0430\u044f \u0432 \u043c\u043e\u0434\u0443\u043b\u0435 <code><a href=\"http:\/\/docwiki.embarcadero.com\/Libraries\/Berlin\/en\/Vcl.SvcMgr\" rel=\"nofollow noopener noreferrer\">Vcl.SvcMgr<\/a><\/code> \u0434\u043b\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0441\u043b\u0443\u0436\u0431\u044b, \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0435, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0435\u043c \u043f\u0430\u0440\u043e\u043b\u044c, \u0434\u043e\u043b\u0436\u043d\u0430 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 <code>nil<\/code>, \u0430 \u043d\u0435 \u043f\u0443\u0441\u0442\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443,<\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u043a\u0430\u043a \u0438\u043c\u0435\u0435\u0442 \u043c\u0435\u0441\u0442\u043e \u0431\u044b\u0442\u044c \u0441\u0435\u0439\u0447\u0430\u0441.<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"delphi\">Svc := CreateService(SvcMgr, PChar(Name), PChar(DisplayName),   SERVICE_ALL_ACCESS, GetNTServiceType, GetNTStartType, GetNTErrorSeverity,   PChar(Path), PChar(LoadGroup), PTag, PChar(GetNTDependencies),   PSSN, PChar(Password));<\/code><\/pre>\n<\/div><\/div>\n<p>  \u0421\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0435 \u0434\u0430\u0436\u0435 \u043d\u0435\u043b\u044c\u0437\u044f \u043d\u0430\u0437\u0432\u0430\u0442\u044c \u043e\u0448\u0438\u0431\u043a\u043e\u0439 \u2013 \u0441\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e, \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 Delphi \u043f\u0440\u043e\u0441\u0442\u043e-\u043d\u0430\u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435 \u0441\u0442\u0430\u043b\u0438 \u0443\u043b\u0443\u0447\u0448\u0430\u0442\u044c <code>TService<\/code> \u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u0432\u0430\u043d\u0438\u0435 \u043f\u0440\u0435\u0444\u0438\u043a\u0441\u0430 <i>NT Service\\<\/i> \u0432 \u0438\u043c\u0435\u043d\u0438, \u0432\u0435\u0434\u044c \u0434\u043e Windows\u00a07 \u0442\u0430\u043a\u043e\u0439 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u0440\u043d\u043e \u043d\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043b\u043e. \u041f\u043e\u044d\u0442\u043e\u043c\u0443, \u0434\u0430\u0431\u044b \u043d\u0435 \u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u043c\u043e\u0434\u0443\u043b\u044c, \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u043c\u0441\u044f \u0437\u0430\u0434\u0430\u043d\u0438\u0435\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0443\u0436\u0435 \u043f\u043e\u0441\u043b\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0441\u043b\u0443\u0436\u0431\u044b (\u0442.\u00a0\u0435. \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 <code><a href=\"http:\/\/docwiki.embarcadero.com\/Libraries\/Berlin\/en\/Vcl.SvcMgr.TService.ServiceStartName\" rel=\"nofollow noopener noreferrer\">ServiceStartName<\/a><\/code> \u0438 <code><a href=\"http:\/\/docwiki.embarcadero.com\/Libraries\/Berlin\/en\/Vcl.SvcMgr.TService.Password\" rel=\"nofollow noopener noreferrer\">Password<\/a><\/code> \u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u044b \u043f\u0443\u0441\u0442\u044b\u043c\u0438), \u0434\u043b\u044f \u0447\u0435\u0433\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0432\u044b\u0437\u043e\u0432\u0430 \u043b\u0438\u0448\u044c \u043e\u0434\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 (\u0447\u0430\u0441\u0442\u044c \u0440\u0430\u043d\u0435\u0435 \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u043c\u043e\u0433\u043e \u043a\u043e\u0434\u0430, \u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u0437\u0430 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440\u043e\u0432, \u043e\u043f\u0443\u0449\u0435\u043d\u0430):<\/p>\n<pre><code class=\"delphi\">procedure TQueueService.ServiceAfterInstall(Sender: TService); const   VirtualAccountPrefix = 'NT Service\\'; var   ManagerHandle, ServiceHandle: SC_HANDLE;   Description: SERVICE_DESCRIPTION;   VirtualAccount: string; begin   ...    Description.lpDescription := PChar(ServiceDescription);   Win32Check( ChangeServiceConfig2(ServiceHandle, SERVICE_CONFIG_DESCRIPTION, @Description) );    VirtualAccount := VirtualAccountPrefix + Name;   Win32Check     (     ChangeServiceConfig       (       ServiceHandle,       SERVICE_NO_CHANGE, SERVICE_NO_CHANGE, SERVICE_NO_CHANGE,       nil, nil, nil, nil,       PChar(VirtualAccount), nil,       nil       )     );    ... end;<\/code><\/pre>\n<p>  \u041d\u0430\u0434\u043e \u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u0447\u0442\u043e \u0438\u043c\u044f \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c\u043e\u0435 \u043f\u043e\u0441\u043b\u0435 \u043f\u0440\u0435\u0444\u0438\u043a\u0441\u0430, \u0441\u043e\u0432\u0441\u0435\u043c \u043d\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0434\u043e\u043b\u0436\u043d\u043e \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u0442\u044c \u0441 \u0438\u043c\u0435\u043d\u0435\u043c \u0441\u043b\u0443\u0436\u0431\u044b \u2013 \u0433\u043b\u0430\u0432\u043d\u043e\u0435 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0442\u044c \u0435\u0433\u043e \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c.<\/p>\n<h4>\u041f\u0440\u0430\u0432\u0430<\/h4>\n<p>  \u041d\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u044d\u0442\u0430\u043f\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u043e\u0437\u0430\u0431\u043e\u0442\u0438\u0442\u044c\u0441\u044f \u043e \u043f\u0440\u0430\u0432\u0430\u0445 \u0434\u0432\u0443\u0445 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439:<\/p>\n<ul>\n<li>\u041f\u0435\u0440\u0432\u044b\u043c \u0438\u0437 \u043d\u0438\u0445 \u0438\u0434\u0451\u0442 \u0432\u044b\u0448\u0435\u0443\u043f\u043e\u043c\u044f\u043d\u0443\u0442\u044b\u0439 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0439, \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0442\u0430\u043a\u043e\u0432\u0430: \u0435\u0441\u043b\u0438 \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0441\u043b\u0443\u0436\u0431\u0443 \u0432 \u0442\u0435\u043a\u0443\u0449\u0435\u043c \u0432\u0438\u0434\u0435, \u0442\u043e \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0441\u043e\u043e\u0431\u0449\u0438\u0442 \u043e\u0431 \u043e\u0442\u043a\u0430\u0437\u0435 \u0432 \u0434\u043e\u0441\u0442\u0443\u043f\u0435, \u0438\u0431\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0442\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0439 \u0430\u043a\u043a\u0430\u0443\u043d\u0442 \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u043f\u0440\u0430\u0432 \u043d\u0430 \u0437\u0430\u043f\u0443\u0441\u043a \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u0441\u043b\u0443\u0436\u0431\u044b (\u0438\u0445 \u0443 \u043d\u0435\u0433\u043e \u0432\u043e\u043e\u0431\u0449\u0435 \u043a\u043e\u0442 \u043d\u0430\u043f\u043b\u0430\u043a\u0430\u043b \u2013 \u0437\u0430 \u044d\u0442\u043e \u0438 \u0432\u044b\u0431\u0440\u0430\u043d). \u0414\u0440\u0443\u0433\u0438\u043c\u0438 \u0441\u043b\u043e\u0432\u0430\u043c\u0438, \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432\u043e\u0442 \u0442\u0430\u043a\u0443\u044e \u0437\u0430\u043f\u0438\u0441\u044c:\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/2v\/lr\/ve\/2vlrvevwuv0kblskufhsntkmgs8.png\" alt=\"\u041f\u0440\u0430\u0432\u0430 \u043d\u0430 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u0439 \u0444\u0430\u0439\u043b \u0441\u043b\u0443\u0436\u0431\u044b\" width=\"300\" data-src=\"https:\/\/habrastorage.org\/webt\/2v\/lr\/ve\/2vlrvevwuv0kblskufhsntkmgs8.png\"\/><\/div>\n<\/li>\n<li>\u0412\u0442\u043e\u0440\u044b\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0442\u043e\u0442, \u043e\u0442 \u0438\u043c\u0435\u043d\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0435\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u2013 \u0434\u0435\u043b\u043e \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043b\u044e\u0431\u0430\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u0430 (\u0437\u0430\u043f\u0443\u0441\u043a, \u043f\u0440\u0438\u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0438 \u0442.\u00a0\u043f.) \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442\u0441\u044f \u043d\u0430 \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u043f\u0440\u0430\u0432 \u0443 \u0435\u0451 \u0438\u043d\u0438\u0446\u0438\u0430\u0442\u043e\u0440\u0430, \u043f\u043e\u043a\u0430 \u0438\u0445, \u0443\u0432\u044b, \u043d\u0435 \u0438\u043c\u0435\u044e\u0449\u0435\u0433\u043e. \u0425\u043e\u0442\u044f \u0432 \u043e\u0431\u0449\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043f\u0440\u043e \u0423\u041f \u0441\u043b\u0443\u0436\u0431\u0430 \u043c\u043e\u0436\u0435\u0442 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0437\u043d\u0430\u0442\u044c (\u043e\u043d\u043e, \u0441\u043a\u0430\u0436\u0435\u043c, \u0441\u043e\u0437\u0434\u0430\u0451\u0442\u0441\u044f \u0434\u0440\u0443\u0433\u0438\u043c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u043e\u043c \u043d\u0430 \u0438\u043d\u043e\u043c <abbr title=\"\u042f\u0437\u044b\u043a\u0435 \u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f\">\u042f\u041f<\/abbr>), \u043d\u043e \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f \u0432 \u0441\u0442\u0430\u0442\u044c\u0435 \u0438\u043d\u0430\u044f \u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u043e\u0437\u043b\u043e\u0436\u0438\u0442\u044c \u043d\u0430 \u0441\u043b\u0443\u0436\u0431\u0443 \u0438 \u0434\u0430\u043d\u043d\u043e\u0435 \u0431\u0440\u0435\u043c\u044f, \u0430 \u0447\u0442\u043e\u0431\u044b \u043e\u043d\u0430 \u0437\u043d\u0430\u043b\u0430 \u043a\u0430\u043a\u043e\u043c\u0443 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0432\u044b\u0434\u0430\u0442\u044c \u0442\u0430\u043a\u0438\u0435 \u043f\u0440\u0430\u0432\u0430, \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u043d\u043e\u0432\u044b\u0439 \u043a\u043b\u044e\u0447 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 <i>\/ControlUser<\/i>, \u0433\u0434\u0435 \u043f\u043e\u0441\u043b\u0435 \u0434\u0432\u043e\u0435\u0442\u043e\u0447\u0438\u044f \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0438\u043c\u044f; \u0435\u0441\u043b\u0438 \u043f\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0439 \u043f\u0440\u0438\u043c\u0435\u0440, \u0442\u043e \u0442\u0435\u043f\u0435\u0440\u044c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443 \u0441\u043b\u0443\u0436\u0431\u044b \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u044c \u0441 \u0442\u0430\u043a\u0438\u043c\u0438 \u043a\u043b\u044e\u0447\u0430\u043c\u0438 \u2013 <i>\/install \/ControlUser:SomeUser1<\/i>.<\/li>\n<\/ul>\n<p>  \u0414\u043e\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0441\u043e\u0431\u044b\u0442\u0438\u044f \u043f\u043e\u0434 \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u0435 \u0432\u044b\u0433\u043b\u044f\u0434\u044f\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:<\/p>\n<pre><code class=\"delphi\">interface  uses   System.SysUtils, Winapi.Windows, Vcl.SvcMgr;  ...  implementation  uses   Winapi.WinSvc, Winapi.AccCtrl, Winapi.AclAPI;  procedure TQueueService.ServiceAfterInstall(Sender: TService);    procedure GrantAccess(const UserName, ObjectName: string; const ObjectType: SE_OBJECT_TYPE; const Rights: ACCESS_MASK);   begin     \/\/ \u0420\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u044b \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u0430 \u0447\u0443\u0442\u044c \u043d\u0438\u0436\u0435 \u0432 \u0441\u0442\u0430\u0442\u044c\u0435.     ...   end;  const   VirtualAccountPrefix = 'NT Service\\';   ControlUserSwitch = 'ControlUser'; var   ManagerHandle, ServiceHandle: SC_HANDLE;   Description: SERVICE_DESCRIPTION;   VirtualAccount, ControlUserName: string; begin   ...    Description.lpDescription := PChar(ServiceDescription);   Win32Check( ChangeServiceConfig2(ServiceHandle, SERVICE_CONFIG_DESCRIPTION, @Description) );    VirtualAccount := VirtualAccountPrefix + Name;   Win32Check     (     ChangeServiceConfig       (       ServiceHandle,       SERVICE_NO_CHANGE, SERVICE_NO_CHANGE, SERVICE_NO_CHANGE,       nil, nil, nil, nil,       PChar(VirtualAccount), nil,       nil       )     );   GrantAccess( VirtualAccount, ParamStr(0), SE_FILE_OBJECT, GENERIC_READ or GENERIC_EXECUTE );    if FindCmdLineSwitch(ControlUserSwitch, ControlUserName) then     GrantAccess(ControlUserName, Name, SE_SERVICE, SERVICE_START or SERVICE_STOP or SERVICE_USER_DEFINED_CONTROL);    ... end;<\/code><\/pre>\n<p>  \u041a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0430 <code>SERVICE_USER_DEFINED_CONTROL<\/code> \u0443 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0423\u041f \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0437\u0430 \u043f\u0440\u0430\u0432\u043e \u043d\u0430 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0443 <a href=\"#Control_application_reset_errors_command\">\u043d\u0435\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u044b<\/a>, \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0439 \u0432 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f\u0445. \u0420\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0436\u0435 <code>GrantAccess<\/code> \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u0430 \u043d\u0430 <a href=\"https:\/\/docs.microsoft.com\/en-us\/windows\/win32\/secauthz\/modifying-the-acls-of-an-object-in-c--\" rel=\"nofollow noopener noreferrer\">C++-\u043f\u0440\u0438\u043c\u0435\u0440\u0435<\/a> \u0438\u0437 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 Microsoft:<\/p>\n<pre><code class=\"delphi\">procedure GrantAccess(const UserName, ObjectName: string; const ObjectType: SE_OBJECT_TYPE; const Rights: ACCESS_MASK); var   SecurityDescriptor: PSECURITY_DESCRIPTOR;   OldDACL, NewDACL: PACL;   UserAccess: EXPLICIT_ACCESS; begin   CheckOSError     (     GetNamedSecurityInfo       (       PChar(ObjectName),       ObjectType,       DACL_SECURITY_INFORMATION,       nil,       nil,       @OldDACL,       nil,       SecurityDescriptor       )     );   try     BuildExplicitAccessWithName( @UserAccess, PChar(UserName), Rights, SET_ACCESS, NO_INHERITANCE );     CheckOSError( SetEntriesInAcl(1, @UserAccess, OldDACL, NewDACL) );     try       CheckOSError         (         SetNamedSecurityInfo           (           PChar(ObjectName),           ObjectType,           DACL_SECURITY_INFORMATION,           nil,           nil,           NewDACL,           nil           )         );     finally       LocalFree( HLOCAL(NewDACL) );     end;   finally     LocalFree( HLOCAL(SecurityDescriptor) );   end; end;<\/code><\/pre>\n<p>  \u0417\u0430\u0432\u0435\u0440\u0448\u0430\u044f \u0438\u0437\u044b\u0441\u043a\u0430\u043d\u0438\u044f \u0441 <code>AfterInstall<\/code>, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u043b\u044e\u0431\u043e\u0435 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0432 \u044d\u0442\u043e\u043c \u0441\u043e\u0431\u044b\u0442\u0438\u0438 \u043f\u0440\u0438\u0432\u0435\u0434\u0451\u0442 \u043a \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044e \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0442\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u043e\u0439 \u0441\u043b\u0443\u0436\u0431\u044b (\u0441 \u0437\u0430\u043f\u0438\u0441\u044c\u044e \u0442\u0435\u043a\u0441\u0442\u0430 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0432 \u0436\u0443\u0440\u043d\u0430\u043b Windows), \u0430 \u0432 \u043f\u0440\u0438\u0432\u0435\u0434\u0451\u043d\u043d\u043e\u043c \u043a\u043e\u0434\u0435 \u0435\u0433\u043e \u043c\u043e\u0436\u0435\u0442 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u043a \u043f\u0440\u0438\u043c\u0435\u0440\u0443, \u0444\u0443\u043d\u043a\u0446\u0438\u044f <code><a href=\"http:\/\/docwiki.embarcadero.com\/Libraries\/Berlin\/en\/System.SysUtils.Win32Check\" rel=\"nofollow noopener noreferrer\">Win32Check<\/a><\/code>.<\/p>\n<p>  \u0412 \u0437\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043f\u043e\u0434\u0440\u0430\u0437\u0434\u0435\u043b\u0430 \u0442\u0430\u043a\u0436\u0435 \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c\u0441\u044f \u043d\u0430 \u043c\u043e\u043c\u0435\u043d\u0442\u0435, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u043e\u043c \u0441 \u043f\u0440\u0430\u0432\u0430\u043c\u0438, \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044b\u043c\u0438 \u0432\u044b\u0448\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0423\u041f: \u0435\u0441\u043b\u0438, \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u043c \u0432 \u0446\u0435\u043b\u044f\u0445 \u043e\u0442\u043b\u0430\u0434\u043a\u0438, \u0438\u0445 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u043e\u043c\u0435\u043d\u044f\u0442\u044c, \u0442\u043e \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u043d\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0443\u0434\u0430\u043b\u044f\u0442\u044c \u0438 \u0437\u0430\u043d\u043e\u0432\u043e \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c \u0441\u043b\u0443\u0436\u0431\u0443 \u2013 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0432\u0441\u0435\u043c \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e\u0439 \u0443\u0442\u0438\u043b\u0438\u0442\u043e\u0439 <a href=\"https:\/\/docs.microsoft.com\/en-us\/sysinternals\/downloads\/process-explorer\" rel=\"nofollow noopener noreferrer\">Process Explorer<\/a>: \u043a\u043e\u0433\u0434\u0430 \u0441\u043b\u0443\u0436\u0431\u0430 \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u0430, \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u0435\u0451 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u0438 \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043d\u0430 \u0432\u043a\u043b\u0430\u0434\u043a\u0443 Services, \u043f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u043f\u0440\u043e\u0439\u0442\u0438\u0441\u044c \u043f\u043e \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u043c \u0448\u0430\u0433\u0430\u043c:<\/p>\n<p>  <a href=\"https:\/\/habrastorage.org\/webt\/wp\/cx\/au\/wpcxauytvcncqhyr-unyshslpvo.png\" rel=\"nofollow noopener noreferrer\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/wp\/cx\/au\/wpcxauytvcncqhyr-unyshslpvo.png\" alt=\"\u041f\u0440\u0430\u0432\u0430 \u043d\u0430 \u0441\u043b\u0443\u0436\u0431\u0443\" data-src=\"https:\/\/habrastorage.org\/webt\/wp\/cx\/au\/wpcxauytvcncqhyr-unyshslpvo.png\"\/><\/a><\/p>\n<h3>\u041e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u043e\u0447\u0435\u0440\u0435\u0434\u0438<\/h3>\n<p>  \u041a\u0430\u043a \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e, Delphi \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442 \u0434\u0432\u0430 \u043f\u043e\u0434\u0445\u043e\u0434\u0430 \u043a \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0441\u043b\u0443\u0436\u0431\u044b (\u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043e \u043d\u0438\u0445 \u043c\u043e\u0436\u043d\u043e \u0443\u0437\u043d\u0430\u0442\u044c \u0432 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0435 \u043d\u0430 \u0434\u0440\u0443\u0433\u043e\u043c \u0440\u0435\u0441\u0443\u0440\u0441\u0435 \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 <a href=\"http:\/\/www.delphikingdom.com\/asp\/viewitem.asp?catalogid=1348\" rel=\"nofollow noopener noreferrer\">\u00ab3. \u0421\u043e\u0431\u044b\u0442\u0438\u044f \u0441\u043b\u0443\u0436\u0431\u044b\u00bb<\/a>):<\/p>\n<ol>\n<li>\u041d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0441\u043e\u0431\u044b\u0442\u0438\u0439 <code><a href=\"http:\/\/docwiki.embarcadero.com\/Libraries\/Berlin\/en\/Vcl.SvcMgr.TService.OnStart\" rel=\"nofollow noopener noreferrer\">OnStart<\/a><\/code> \u0438 <code><a href=\"http:\/\/docwiki.embarcadero.com\/Libraries\/Berlin\/en\/Vcl.SvcMgr.TService.OnStop\" rel=\"nofollow noopener noreferrer\">OnStop<\/a><\/code>, \u0447\u0442\u043e \u043f\u043e\u0434\u0440\u0430\u0437\u0443\u043c\u0435\u0432\u0430\u0435\u0442 \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043f\u043e\u0442\u043e\u043a\u043e\u0432, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0445 \u043d\u0443\u0436\u043d\u044b\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b.<\/li>\n<li>\u041d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0441\u043e\u0431\u044b\u0442\u0438\u044f <code><a href=\"http:\/\/docwiki.embarcadero.com\/Libraries\/Berlin\/en\/Vcl.SvcMgr.TService.OnExecute\" rel=\"nofollow noopener noreferrer\">OnExecute<\/a><\/code>, \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0432 \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u0437\u0430\u0431\u043e\u0442\u043b\u0438\u0432\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u043e\u043c <code>TService<\/code> \u043f\u043e\u0442\u043e\u043a\u0435, \u043f\u0440\u0438\u0447\u0451\u043c \u0441\u043b\u0443\u0436\u0431\u0430 \u0441\u0440\u0430\u0437\u0443 \u0436\u0435 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u043f\u043e\u0441\u043b\u0435 \u0432\u044b\u0445\u043e\u0434\u0430 \u0438\u0437 \u0441\u043e\u0431\u044b\u0442\u0438\u044f; \u0438\u043c\u0435\u043d\u043d\u043e \u0434\u0430\u043d\u043d\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0445\u043e\u0440\u043e\u0448\u043e \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 \u043f\u043e\u0434 \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u0443\u044e \u0432 \u0441\u0442\u0430\u0442\u044c\u0435 \u0446\u0435\u043b\u044c \u2013 \u043a\u0430\u043a \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u044b \u0432\u0441\u0435 \u0437\u0430\u0434\u0430\u0447\u0438, \u0434\u0435\u043b\u0430\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435\u0447\u0435\u0433\u043e \u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u044c\u0441\u044f.<\/li>\n<\/ol>\n<p>  <\/p>\n<h4>\u041e\u0441\u043d\u043e\u0432\u0430 \u0441\u043e\u0431\u044b\u0442\u0438\u044f<\/h4>\n<p>  \u0412 \u043f\u0435\u0440\u0432\u043e\u043c \u043f\u0440\u0438\u0431\u043b\u0438\u0436\u0435\u043d\u0438\u0438 \u043a\u043e\u0434 <code>OnExecute<\/code> \u043f\u0440\u043e\u0441\u0442 \u0438 \u043d\u0435\u0437\u0430\u0442\u0435\u0439\u043b\u0438\u0432 \u2013 \u0438\u0434\u0451\u0442 \u0438\u0437\u0432\u043b\u0435\u0447\u0435\u043d\u0438\u0435 \u0437\u0430\u0434\u0430\u0447 \u0434\u043e \u0442\u0435\u0445 \u043f\u043e\u0440, \u043f\u043e\u043a\u0430 \u043e\u043d\u0438 \u0438\u043c\u0435\u044e\u0442\u0441\u044f \u0432 \u043e\u0447\u0435\u0440\u0435\u0434\u0438:<\/p>\n<pre><code class=\"delphi\">procedure TQueueService.ServiceExecute(Sender: TService); type   TTask = ...; \/\/ \u041a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0439 \u0442\u0438\u043f \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u0434\u0435\u0442\u0430\u043b\u0435\u0439 \u0412\u0430\u0448\u0435\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438.   TTaskList = array of TTask; \/\/ \u041c\u0430\u0441\u0441\u0438\u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d \u043b\u0438\u0448\u044c \u0434\u043b\u044f \u0438\u043b\u043b\u044e\u0441\u0442\u0440\u0430\u0446\u0438\u0438, \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b \u043b\u044e\u0431\u044b\u0435 \u0434\u0440\u0443\u0433\u0438\u0435 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0434\u0430\u043d\u043d\u044b\u0445 (TList&lt;TTask>, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440).    function ExtractTaskPortion(out Tasks: TTaskList): Boolean;   begin     \/\/ \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0432\u0435\u0440\u043d\u0451\u0442 True \u0432 \u0441\u043b\u0443\u0447\u0430\u0435, \u0435\u0441\u043b\u0438 \u0432 \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u0435\u0449\u0451 \u0435\u0441\u0442\u044c \u0437\u0430\u0434\u0430\u0447\u0438 \u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 (\u043f\u0440\u0438 \u044d\u0442\u043e\u043c     \/\/ \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c\u0441\u044f \u043e\u043d\u0438 \u0431\u0443\u0434\u0443\u0442 \u0432 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0435 Tasks).     ...      Result := Length(Tasks) > 0;   end;    procedure ProcessTask(const Task: TTask);   begin     \/\/ \u041f\u043e\u0441\u043b\u0435 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0437\u0430\u0434\u0430\u0447\u0438, \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0435\u0451 \u0441\u0442\u0430\u0442\u0443\u0441 (\u043d\u0430 2-\u0439 \u0438\u043b\u0438 3-\u0439).     ...   end;  var   Task: TTask;   Tasks: TTaskList; begin   while ExtractTaskPortion(Tasks) do     for Task in Tasks do       ProcessTask(Task); end;<\/code><\/pre>\n<p>  \u0421\u0442\u043e\u0438\u0442 \u043f\u043e\u044f\u0441\u043d\u0438\u0442\u044c, \u0447\u0442\u043e \u0437\u0430\u0434\u0430\u0447\u0438 \u0431\u0435\u0440\u0443\u0442\u0441\u044f \u043d\u0435 \u043f\u043e \u043e\u0434\u0438\u043d\u043e\u0447\u043a\u0435, \u0430 \u0438\u043c\u0435\u043d\u043d\u043e \u043f\u043e\u0440\u0446\u0438\u044f\u043c\u0438 \u0438\u0441\u0445\u043e\u0434\u044f \u0438\u0437 \u0441\u043e\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f, \u0447\u0442\u043e \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u043c\u0438\u0440\u0435 \u043e\u0431\u044b\u0447\u043d\u043e \u0437\u0430\u0442\u0440\u0430\u0442\u044b \u043d\u0430 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0441\u0440\u0430\u0437\u0443 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0438\u0437 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430 \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0438\u0436\u0435, \u0447\u0435\u043c \u0438\u0445 \u0432\u044b\u0431\u043e\u0440\u043a\u0430 \u043f\u043e \u043e\u0434\u043d\u043e\u043c\u0443 (\u0438\u043c\u0435\u043d\u043d\u043e \u0442\u0430\u043a, \u0441\u043a\u0430\u0436\u0435\u043c, \u043e\u0431\u0441\u0442\u043e\u0438\u0442 \u0434\u0435\u043b\u043e \u0441 \u0431\u0430\u0437\u0430\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u0445).<\/p>\n<h4>\u041f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0435 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438<\/h4>\n<p>  \u041d\u0435\u0441\u043b\u043e\u0436\u043d\u043e \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u0432 \u0442\u0435\u043a\u0443\u0449\u0435\u043c \u0432\u0438\u0434\u0435 \u043d\u0435 \u043f\u0440\u0435\u0434\u0443\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u043e \u043d\u0438\u043a\u0430\u043a\u043e\u0433\u043e \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u0430 \u043f\u043e \u043f\u0440\u0435\u043a\u0440\u0430\u0449\u0435\u043d\u0438\u044e \u0446\u0438\u043a\u043b\u0430 \u0438\u0437\u0432\u043b\u0435\u0447\u0435\u043d\u0438\u044f \u0437\u0430\u0434\u0430\u0447, \u0430 \u0432\u0435\u0434\u044c \u043f\u0440\u0438\u0447\u0438\u043d \u0442\u0430\u043a\u043e\u0433\u043e \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f, \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u0422\u0417, \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0434\u0432\u0435:<\/p>\n<ol>\n<li><a href=\"#Service_stop_command\">\u041a\u043e\u043c\u0430\u043d\u0434\u0430 \u043d\u0430 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443<\/a> \u0441\u043b\u0443\u0436\u0431\u044b, \u043f\u043e\u0441\u043b\u0435 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043d\u0438\u043a\u0430\u043a\u043e\u0433\u043e \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 <i>\u0442\u0435\u043a\u0443\u0449\u0435\u0439<\/i> \u0437\u0430\u0434\u0430\u0447\u0438 \u0431\u044b\u0442\u044c \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u2013 \u043e\u043d\u0430 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u0441\u0442\u0440\u0435\u0435, \u043f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u0432\u0441\u0435 \u043e\u0441\u0442\u0430\u0432\u0448\u0438\u0435\u0441\u044f \u0432 \u043f\u043e\u0440\u0446\u0438\u0438 \u0437\u0430\u0434\u0430\u0447\u0438 \u0442\u043e\u0436\u0435 \u043e\u0442\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0438 \u0441\u043b\u0443\u0436\u0431\u0430 \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u0435\u0442\u0441\u044f.<\/li>\n<li><a name=\"Reset_errors_interruption_reason\"><\/a><a href=\"#Control_application_reset_errors_command\">\u041a\u043e\u043c\u0430\u043d\u0434\u0430 \u043d\u0430 \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u0443\u044e \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0443<\/a> \u0437\u0430\u0434\u0430\u0447 \u0441 \u0442\u0440\u0435\u0442\u044c\u0438\u043c \u0441\u0442\u0430\u0442\u0443\u0441\u043e\u043c, \u0434\u043b\u044f \u0447\u0435\u0433\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u0440\u0435\u0440\u0432\u0430\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0443 \u043f\u043e \u0442\u0435\u043a\u0443\u0449\u0435\u0439 (\u043a\u0430\u043a \u0438 \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u043d\u0430 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443), \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0441\u0442\u0430\u0442\u0443\u0441 \u0432\u0441\u0435\u0445 \u043e\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044b\u0445 \u0437\u0430\u0434\u0430\u0447 \u043d\u0430 \u043f\u0435\u0440\u0432\u044b\u0439, \u0437\u0430\u043f\u0440\u043e\u0441\u0438\u0442\u044c \u043d\u043e\u0432\u0443\u044e \u043f\u043e\u0440\u0446\u0438\u044e \u0438 \u0434\u0430\u043b\u0435\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u043a\u0430\u043a \u043e\u0431\u044b\u0447\u043d\u043e; \u043d\u0430\u0434\u043e\u0431\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u0442\u044c \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u043f\u043e\u0440\u0446\u0438\u0438 \u0441\u0432\u044f\u0437\u0430\u043d\u0430 \u0441 \u0442\u0435\u043c, \u0447\u0442\u043e \u0441\u0440\u0435\u0434\u0438 \u0437\u0430\u0434\u0430\u0447 \u0441 \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0442\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u043c \u043f\u0435\u0440\u0432\u044b\u043c \u0441\u0442\u0430\u0442\u0443\u0441\u043e\u043c \u043c\u043e\u0433\u0443\u0442 \u0438\u043c\u0435\u0442\u044c\u0441\u044f \u043e\u0431\u043b\u0430\u0434\u0430\u044e\u0449\u0438\u0435 \u0431\u043e\u0301\u043b\u044c\u0448\u0438\u043c <a href=\"#Task_priority_property\">\u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u043e\u043c<\/a>.<\/li>\n<\/ol>\n<p>  \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u043e\u0439 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f\u043c\u0438 \u2013 \u043e\u043d\u0438 \u0432 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0432\u044b\u0441\u0442\u0443\u043f\u044f\u0442 \u0432 \u043f\u043e\u043b\u043d\u043e\u043c \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441\u043e \u0441\u0432\u043e\u0438\u043c \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c, \u0442\u043e \u0435\u0441\u0442\u044c \u0431\u0443\u0434\u0443\u0442 \u0441\u0438\u0433\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0435 \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0435, \u0430 \u0438\u043c\u0435\u043d\u043d\u043e \u043e\u0431 \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439, \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u044e\u0449\u0435\u0439 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u0442\u0435\u0447\u0435\u043d\u0438\u0435 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438 (\u0432 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0442\u0430\u043a\u043e\u0432\u043e\u0439 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u043e\u0442 \u041c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u0430 \u0441\u043b\u0443\u0436\u0431 \u0438 \u0423\u041f). \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043e\u0431\u044a\u044f\u0432\u0438\u043c \u043d\u043e\u0432\u044b\u0439 \u043a\u043b\u0430\u0441\u0441 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0439 \u043f\u043e\u043b\u0435 \u0441 \u043f\u0440\u0438\u0447\u0438\u043d\u043e\u0439 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f:<\/p>\n<pre><code class=\"delphi\">...  implementation  ...  type   EInterruption = class(Exception)   public     type       TReason = (irStop, irErrorsReset);   public     Reason: TReason;     constructor Create(const Reason: TReason);   end;  constructor EInterruption.Create(const Reason: TReason); begin   inherited Create(string.Empty);   Self.Reason := Reason; end;  ...<\/code><\/pre>\n<p>  \u042d\u0442\u043e \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0441\u0442\u0430\u043d\u0435\u0442 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0432 \u043d\u043e\u0432\u043e\u0439 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0435 <code>CheckInterruption<\/code> (\u043a\u0430\u043a \u2013 \u043e\u0431 \u044d\u0442\u043e\u043c \u0447\u0443\u0442\u044c \u043f\u043e\u0437\u0436\u0435), \u0430 \u0440\u0435\u0430\u043a\u0446\u0438\u044f \u043d\u0430 \u043d\u0435\u0433\u043e \u0438\u043c\u0435\u0435\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0432\u0438\u0434:<\/p>\n<pre><code class=\"delphi\">procedure TQueueService.ServiceExecute(Sender: TService); type   TTask = ...;   TTaskList = array of TTask;    function ExtractTaskPortion(out Tasks: TTaskList): Boolean;   begin     ...   end;    procedure CheckInterruption;   begin     \/\/ \u041e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0437\u0430 \u0432\u043e\u0437\u0431\u0443\u0436\u0434\u0435\u043d\u0438\u0435 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f EInterruption.     ...   end;    procedure ProcessTask(const Task: TTask);   begin     ...   end;    procedure ResetQueueErrors;   begin     \/\/ \u041c\u0435\u043d\u044f\u0435\u0442 3-\u0439 \u0441\u0442\u0430\u0442\u0443\u0441 \u043d\u0430 \u043f\u0435\u0440\u0432\u044b\u0439 \u0443 \u0432\u0441\u0435\u0445 \u0437\u0430\u0434\u0430\u0447 \u0432 \u043e\u0447\u0435\u0440\u0435\u0434\u0438.     ...   end;  var   Task: TTask;   Tasks: TTaskList; begin   while ExtractTaskPortion(Tasks) do     try       for Task in Tasks do         ProcessTask(Task);     except       on E: EInterruption do         case E.Reason of           irStop: Break;           irErrorsReset: ResetQueueErrors;           else raise;         end;     end; end;<\/code><\/pre>\n<p>  \u041e\u0442 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043b\u0438\u0448\u044c \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u0432\u044b\u0437\u043e\u0432 <code>CheckInterruption<\/code> \u043f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u0435\u0441\u043a\u0438, \u0447\u0435\u0440\u0435\u0437 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u044d\u0442\u0430\u043f\u044b \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0437\u0430\u0434\u0430\u0447\u0438 \u0432 <code>ProcessTask<\/code>, \u043d\u0430\u0432\u0440\u043e\u0434\u0435 \u0442\u0430\u043a\u043e\u0433\u043e:<\/p>\n<pre><code class=\"delphi\">procedure ProcessTask(const Task: TTask); begin   \/\/ \u041d\u0435\u043a\u0438\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438).   CheckInterruption;   ...    \/\/ \u0415\u0449\u0451 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u044d\u0442\u0430\u043f.   CheckInterruption;   ...    \/\/ \u041d\u0435\u043a\u0438\u0439 \u044d\u0442\u0430\u043f-\u0446\u0438\u043a\u043b.   for ... to ... do   begin     CheckInterruption;     ...   end;    \/\/ \u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u0442\u0430\u0442\u0443\u0441\u0430 \u0437\u0430\u0434\u0430\u0447\u0438.   CheckInterruption;   ... end;<\/code><\/pre>\n<p>  <\/p>\n<h4>\u0412\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u0441 \u041c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u043e\u043c \u0441\u043b\u0443\u0436\u0431<\/h4>\n<p>  \u0412 \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u043c\u043e\u043c \u0441\u043e\u0431\u044b\u0442\u0438\u0438 \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0435\u0449\u0451 \u0442\u0440\u0438 \u0432\u0435\u0449\u0438, \u0434\u0432\u0435 \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0443\u0434\u043e\u0431\u043d\u043e \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0438\u0442\u044c \u0432 \u043e\u0434\u043d\u043e\u0439 <code>CheckInterruption<\/code> \u2013 \u0432\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043d\u0430\u043a\u043e\u043d\u0435\u0446 \u0443\u0436\u0435 \u0440\u0435\u0430\u043b\u044c\u043d\u0430\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f, \u0430 \u0432\u043e-\u0432\u0442\u043e\u0440\u044b\u0445, \u0441\u043b\u0443\u0436\u0431\u0430 \u043e\u0431\u044f\u0437\u0430\u043d\u0430 \u043f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u0435\u0441\u043a\u0438 \u0438\u0437\u0432\u0435\u0449\u0430\u0442\u044c \u041c\u0435\u043d\u0435\u0434\u0436\u0435\u0440 \u043e \u0441\u0432\u043e\u0451\u043c \u0441\u0442\u0430\u0442\u0443\u0441\u0435, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u043f\u0440\u0438\u0448\u0435\u0434\u0448\u0438\u0435 \u043e\u0442 \u043d\u0435\u0433\u043e \u0436\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0438 \u0440\u0435\u0430\u0433\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0430 \u043d\u0438\u0445. \u0415\u0441\u043b\u0438 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043e\u0431 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435 \u0441\u043b\u0443\u0436\u0431\u044b <code>TService<\/code> \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u0441\u0430\u043c, \u0442\u043e \u0432\u043e\u0442 <a href=\"#Reset_errors_interruption_reason\">\u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u0430\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u0430<\/a> \u043e\u0442 \u0423\u041f \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u044e\u0449\u0435\u0433\u043e\u0441\u044f, \u043f\u0440\u0435\u0436\u0434\u0435 \u0432\u0441\u0435\u0433\u043e, \u0432 \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0438 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0430 <code>DoCustomControl<\/code> \u2013 \u0432 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0442\u0430\u043c \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0432\u0441\u0435\u0433\u043e \u043b\u0438\u0448\u044c \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c \u043f\u0435\u0440\u0435\u0434\u0430\u043d\u043d\u044b\u0439 \u0441\u043b\u0443\u0436\u0431\u0435 \u0446\u0435\u043b\u043e\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u0439 \u043a\u043e\u0434 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0432 \u0437\u0430\u0432\u0435\u0434\u0451\u043d\u043d\u043e\u043c \u0434\u043b\u044f \u044d\u0442\u043e\u0439 \u0446\u0435\u043b\u0438 \u043f\u043e\u043b\u0435 <a name=\"FCustomCode_field\"><\/a><code>FCustomCode<\/code>:<\/p>\n<pre><code class=\"delphi\">interface  ...  type   TQueueService = class(TService)     procedure ServiceAfterInstall(Sender: TService);     procedure ServiceExecute(Sender: TService);   private     FCustomCode: DWORD;   protected     function DoCustomControl(CtrlCode: DWord): Boolean; override;   ...   end;  ...  implementation  ...  function TQueueService.DoCustomControl(CtrlCode: DWord): Boolean; begin   Result := inherited;   FCustomCode := CtrlCode; end;<\/code><\/pre>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0443:<\/p>\n<pre><code class=\"delphi\">procedure CheckInterruption; begin   ReportStatus;   FCustomCode := 0;   ServiceThread.ProcessRequests(False); \/\/ \u0412\u043d\u0443\u0442\u0440\u0438 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f DoCustomControl.    if Terminated then     raise EInterruption.Create(irStop);    case FCustomCode of     RESET_QUEUE_ERRORS_CONTROL_CODE: raise EInterruption.Create(irErrorsReset);   end; end;<\/code><\/pre>\n<p>  \u0417\u0434\u0435\u0441\u044c \u043c\u0435\u0442\u043e\u0434\u044b <code><a href=\"http:\/\/docwiki.embarcadero.com\/Libraries\/Berlin\/en\/Vcl.SvcMgr.TService.ReportStatus\" rel=\"nofollow noopener noreferrer\">ReportStatus<\/a><\/code> \u0438 <code><a href=\"http:\/\/docwiki.embarcadero.com\/Libraries\/Berlin\/en\/Vcl.SvcMgr.TServiceThread.ProcessRequests\" rel=\"nofollow noopener noreferrer\">ProcessRequests<\/a><\/code> \u043e\u0442\u0432\u0435\u0447\u0430\u044e\u0442 \u0437\u0430 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u0441 \u041c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u043e\u043c, \u0430 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0430 <a name=\"RESET_QUEUE_ERRORS_CONTROL_CODE_declaration\"><\/a><code>RESET_QUEUE_ERRORS_CONTROL_CODE<\/code> (\u0435\u0451 \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0441\u043c. \u0432 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 <code><a href=\"https:\/\/docs.microsoft.com\/en-us\/windows\/win32\/api\/winsvc\/nf-winsvc-controlservice#parameters\" rel=\"nofollow noopener noreferrer\">dwControl<\/a><\/code>) \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0430 \u0432 \u043d\u043e\u0432\u043e\u043c \u043c\u043e\u0434\u0443\u043b\u0435 <code>Services.Queue.Constants<\/code>:<\/p>\n<pre><code class=\"delphi\">unit Services.Queue.Constants;  interface  const   RESET_QUEUE_ERRORS_CONTROL_CODE = 128;  implementation  end.<\/code><\/pre>\n<p>  \u041f\u043e\u043b\u0435\u0437\u043d\u043e\u0441\u0442\u044c \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043c\u043e\u0434\u0443\u043b\u044f \u043f\u0440\u043e\u0438\u0441\u0442\u0435\u043a\u0430\u0435\u0442 \u0438\u0437 \u0442\u043e\u0433\u043e \u0444\u0430\u043a\u0442\u0430, \u0447\u0442\u043e \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0435\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0432 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0442\u043e\u0436\u0435 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u043d\u0430 Delphi \u0438 \u043f\u0440\u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0435 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u044d\u0442\u0430 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0430 \u0432 \u043d\u0451\u043c \u0442\u043e\u0436\u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f:<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/5m\/l_\/6o\/5ml_6ovqzkgrrzb20jpdhd7uewa.png\" alt=\"\u0417\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u043c\u043e\u0434\u0443\u043b\u044f Services.Queue.Constants\" width=\"550\" data-src=\"https:\/\/habrastorage.org\/webt\/5m\/l_\/6o\/5ml_6ovqzkgrrzb20jpdhd7uewa.png\"\/><\/div>\n<p>  \u041a\u0441\u0442\u0430\u0442\u0438, \u0435\u0441\u043b\u0438 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044c \u0437\u0430\u0434\u0430\u0451\u0442\u0441\u044f \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u043c \u043e \u0446\u0435\u043b\u0435\u0441\u043e\u043e\u0431\u0440\u0430\u0437\u043d\u043e\u0441\u0442\u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u044f <code><a href=\"#FCustomCode_field\">FCustomCode<\/a><\/code>, \u043a\u043e\u0433\u0434\u0430, \u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0431\u044b, \u043c\u043e\u0436\u043d\u043e \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043f\u0440\u044f\u043c\u043e \u0432 \u043c\u0435\u0442\u043e\u0434\u0435 <code>DoCustomControl<\/code>,<\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u0441\u043a\u0430\u0436\u0435\u043c \u0442\u0430\u043a,<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"delphi\">function TQueueService.DoCustomControl(CtrlCode: DWord): Boolean; begin   Result := inherited;    case CtrlCode of     RESET_QUEUE_ERRORS_CONTROL_CODE: raise EInterruption.Create(irErrorsReset);   end; end;<\/code><\/pre>\n<\/div><\/div>\n<p>  \u0442\u043e \u043e\u0442\u0432\u0435\u0442 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0441\u0442 \u2013 \u0432 \u043c\u043e\u0434\u0443\u043b\u0435 <code>Vcl.SvcMgr<\/code> \u0432\u044b\u0437\u043e\u0432 <code>DoCustomControl<\/code> \u043e\u043a\u0440\u0443\u0436\u0451\u043d \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0435\u0439 <code>try...except<\/code>, \u043f\u0435\u0440\u0435\u0445\u0432\u0430\u0442\u044b\u0432\u0430\u044e\u0449\u0435\u0439 \u043b\u044e\u0431\u044b\u0435 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0431\u0435\u0437 \u0440\u0430\u0437\u0431\u043e\u0440\u0430 (\u0430 \u0432\u0441\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0441\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u043a \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044e \u0437\u0430\u043f\u0438\u0441\u0435\u0439 \u0441 \u0438\u0445 \u0442\u0435\u043a\u0441\u0442\u043e\u043c \u0432 Windows-\u043b\u043e\u0433).<\/p>\n<h4>\u041e\u043a\u043e\u043d\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442<\/h4>\n<p>  \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0433\u043e \u0448\u0442\u0440\u0438\u0445\u0430 \u043a \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0441\u043b\u0443\u0436\u0431\u044b, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0445\u043e\u0442\u044c \u0438 \u0441 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 (\u0432 \u043f\u043b\u0430\u043d\u0435 \u0443\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u044f), \u043d\u043e \u0432\u0441\u0451 \u0436\u0435 \u0437\u0430\u0433\u0432\u043e\u0437\u0434\u043a\u043e\u0439, \u0430 \u0438\u043c\u0435\u043d\u043d\u043e: \u0432 \u0442\u0435\u043a\u0443\u0449\u0435\u043c \u0432\u0438\u0434\u0435, \u0435\u0441\u043b\u0438 \u0432 \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u0432\u0441\u0435 \u0437\u0430\u0434\u0430\u0447\u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u044b, \u043d\u043e \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0437 \u043d\u0438\u0445 \u0438\u043c\u0435\u044e\u0442 \u0442\u0440\u0435\u0442\u0438\u0439 \u0441\u0442\u0430\u0442\u0443\u0441 (\u0437\u0430\u0432\u0435\u0440\u0448\u0438\u043b\u0438\u0441\u044c \u043e\u0448\u0438\u0431\u043a\u043e\u0439), \u0442\u043e \u0437\u0430\u043d\u043e\u0432\u043e \u0442\u0430\u043a\u0438\u0435 \u0432\u0437\u044f\u0442\u044c \u0432 \u0440\u0430\u0431\u043e\u0442\u0443 \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f \u2013 \u0441\u043b\u0443\u0436\u0431\u0430 \u043f\u043e\u0441\u043b\u0435 \u0441\u0442\u0430\u0440\u0442\u0430 \u0441\u0442\u0430\u043d\u0435\u0442 \u0441\u0440\u0430\u0437\u0443 \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u0442\u044c\u0441\u044f, \u0430, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0438 \u043d\u0435 \u0441\u043c\u043e\u0436\u0435\u0442 \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043f\u0440\u0438\u043d\u044f\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u043e\u0442 \u0423\u041f \u043d\u0430 \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u0443\u044e \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u043e\u0448\u0438\u0431\u043e\u043a. <a name=\"Service_start_parameters\"><\/a>\u041a \u0441\u0447\u0430\u0441\u0442\u044c\u044e, \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u0441\u043b\u0443\u0436\u0431\u044b \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u0435\u0439 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432, \u0445\u043e\u0442\u044f \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043e\u0434\u043d\u043e\u0433\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430-\u0444\u043b\u0430\u0433\u0430 \u2013 \u0444\u0430\u043a\u0442 \u0435\u0433\u043e \u043d\u0430\u043b\u0438\u0447\u0438\u044f \u0431\u0443\u0434\u0435\u0442 \u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u0435\u0449\u0451 \u043f\u0435\u0440\u0435\u0434 \u0446\u0438\u043a\u043b\u043e\u043c \u043f\u043e \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0432\u044b\u0437\u0432\u0430\u0442\u044c \u0443\u0436\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0432\u0448\u0443\u044e\u0441\u044f \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0443 <code>ResetQueueErrors<\/code>:<\/p>\n<pre><code class=\"delphi\">procedure TQueueService.ServiceExecute(Sender: TService);    ...    procedure ResetQueueErrors;   begin     \/\/ \u041c\u0435\u043d\u044f\u0435\u0442 3-\u0439 \u0441\u0442\u0430\u0442\u0443\u0441 \u043d\u0430 \u043f\u0435\u0440\u0432\u044b\u0439 \u0443 \u0432\u0441\u0435\u0445 \u0437\u0430\u0434\u0430\u0447 \u0432 \u043e\u0447\u0435\u0440\u0435\u0434\u0438.     ...   end;  var   I: Integer;   Task: TTask;   Tasks: TTaskList; begin   for I := 0 to ParamCount - 1 do     if Param[I] = ResetQueueErrorsParam then     begin       ResetQueueErrors;       Break;     end;    while ExtractTaskPortion(Tasks) do     try       for Task in Tasks do         ProcessTask(Task);     except       on E: EInterruption do         case E.Reason of           irStop: Break;           irErrorsReset: ResetQueueErrors;           else raise;         end;     end; end;<\/code><\/pre>\n<p>  \u0412\u0430\u0436\u043d\u043e \u043f\u043e\u043d\u0438\u043c\u0430\u0442\u044c, \u0447\u0442\u043e \u044d\u0442\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043d\u0435 \u0438\u043c\u0435\u044e\u0442 \u043d\u0438\u0447\u0435\u0433\u043e \u043e\u0431\u0449\u0435\u0433\u043e \u0441 \u043a\u043b\u044e\u0447\u0430\u043c\u0438, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0449\u0438\u043c\u0438\u0441\u044f \u043f\u0440\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435 \u0438 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0438, \u2013 \u0442\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u044e\u0442\u0441\u044f \u043f\u0440\u0438 \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e\u043c \u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u0441\u043b\u0443\u0436\u0431\u044b, \u0430 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e <code><a href=\"http:\/\/docwiki.embarcadero.com\/Libraries\/Berlin\/en\/Vcl.SvcMgr.TService.Param\" rel=\"nofollow noopener noreferrer\">Param<\/a><\/code> \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0442\u043e, \u0447\u0442\u043e \u0431\u044b\u043b\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u043d\u043e \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0439 WinAPI-\u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u043e\u0439 \u0434\u043b\u044f \u0441\u0442\u0430\u0440\u0442\u0430 \u0441\u043b\u0443\u0436\u0431 (\u043e\u043d\u0430 \u0431\u0443\u0434\u0435\u0442 \u0443\u043f\u043e\u043c\u044f\u043d\u0443\u0442\u0430 \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u0440\u0430\u0437\u0434\u0435\u043b\u0435). \u0427\u0442\u043e \u043a\u0430\u0441\u0430\u0435\u0442\u0441\u044f \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u044b <code>ResetQueueErrorsParam<\/code>, \u0442\u043e \u043e\u043d\u0430 \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0430 \u0432 \u043c\u043e\u0434\u0443\u043b\u0435 <code>Services.Queue.Constants<\/code>:<\/p>\n<pre><code class=\"delphi\">unit Services.Queue.Constants;  interface  const   RESET_QUEUE_ERRORS_CONTROL_CODE = 128;    ResetQueueErrorsParam = 'ResetErrors';  implementation  end.<\/code><\/pre>\n<p>  <\/p>\n<h2>\u0423\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0435\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435<\/h2>\n<p>  \u0412 \u0446\u0435\u043b\u044f\u0445 \u0441\u043e\u0441\u0440\u0435\u0434\u043e\u0442\u043e\u0447\u0435\u043d\u0438\u044f \u043d\u0430 \u0433\u043b\u0430\u0432\u043d\u043e\u043c, \u0438 \u0434\u0430\u0431\u044b \u043d\u0435 \u043e\u0442\u0432\u043b\u0435\u043a\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u0432\u0442\u043e\u0440\u043e\u0441\u0442\u0435\u043f\u0435\u043d\u043d\u044b\u0435 \u043d\u044e\u0430\u043d\u0441\u044b, \u0423\u041f \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u043e\u0439 \u043e\u0431\u044b\u0447\u043d\u044b\u0439 VCL-\u043f\u0440\u043e\u0435\u043a\u0442 \u0438\u0437 \u043e\u0434\u043d\u043e\u0439 \u043f\u0440\u043e\u0441\u0442\u0435\u0439\u0448\u0435\u0439 \u0444\u043e\u0440\u043c\u044b, \u0441\u043e\u0441\u0442\u043e\u044f\u0449\u0435\u0439 \u0438\u0437 4-\u0445 \u043a\u043d\u043e\u043f\u043e\u043a; \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u0442\u0435\u043c, \u0432\u0435\u0441\u044c \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u043c\u044b\u0439 \u043a\u043e\u0434 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e WinAPI, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0442\u044c \u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0433\u0434\u0435 \u0443\u0433\u043e\u0434\u043d\u043e \u2013 \u0445\u043e\u0442\u044c \u0432 \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u043b\u0443\u0436\u0431\u0435, \u0445\u043e\u0442\u044c \u0432\u043e\u043e\u0431\u0449\u0435 \u043f\u043e\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u0432 DLL.<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/kj\/fa\/td\/kjfatdsdw47mlcyp40fobtbrtww.png\" alt=\"\u041e\u043a\u043d\u043e \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0435\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\" width=\"500\" data-src=\"https:\/\/habrastorage.org\/webt\/kj\/fa\/td\/kjfatdsdw47mlcyp40fobtbrtww.png\"\/><\/div>\n<p>  \u041a\u043d\u043e\u043f\u043a\u0438 \u043e\u0442\u0432\u0435\u0447\u0430\u044e\u0442 \u0437\u0430 \u0443\u0436\u0435 \u0437\u043d\u0430\u043a\u043e\u043c\u044b\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f:<\/p>\n<ol>\n<li>\u0417\u0430\u043f\u0443\u0441\u043a \u0431\u0435\u0437 \u0438\u0437\u044b\u0441\u043a\u043e\u0432 (\u043a\u0430\u043a \u0431\u0443\u0434\u0442\u043e \u0447\u0435\u0440\u0435\u0437 \u0414\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440 \u0441\u043b\u0443\u0436\u0431).<\/li>\n<li>\u0410\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e \u043f\u0435\u0440\u0432\u043e\u0439 \u043a\u043d\u043e\u043f\u043a\u0435, \u043d\u043e \u0441 <a href=\"#Service_start_parameters\">\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u043c<\/a>, \u043e\u0442\u0432\u0435\u0447\u0430\u044e\u0449\u0438\u043c \u0437\u0430 \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0441\u0431\u0440\u043e\u0441 \u0443 \u0437\u0430\u0434\u0430\u0447 \u0442\u0440\u0435\u0442\u044c\u0435\u0433\u043e \u0441\u0442\u0430\u0442\u0443\u0441\u0430.<\/li>\n<li>\u041f\u0435\u0440\u0435\u0434\u0430\u0447\u0430 \u0441\u043b\u0443\u0436\u0431\u0435 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u044b (\u0441\u043c. \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0443 <code><a href=\"#RESET_QUEUE_ERRORS_CONTROL_CODE_declaration\">RESET_QUEUE_ERRORS_CONTROL_CODE<\/a><\/code>).<\/li>\n<li>\u041e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0441\u043b\u0443\u0436\u0431\u044b (\u043a\u0430\u043a \u0431\u0443\u0434\u0442\u043e \u0447\u0435\u0440\u0435\u0437 \u0414\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440 \u0441\u043b\u0443\u0436\u0431).<\/li>\n<\/ol>\n<p>  <\/p>\n<h3>\u041f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f<\/h3>\n<p>  \u0412 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u043c \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0447\u0430\u0441\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440 \u041c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u0430 \u0441\u043b\u0443\u0436\u0431, \u043f\u043e\u044d\u0442\u043e\u043c\u0443, \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0435\u0433\u043e \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 \u0437\u0430\u043d\u043e\u0432\u043e, \u0441\u0434\u0435\u043b\u0430\u0435\u043c \u044d\u0442\u043e \u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u0444\u043e\u0440\u043c\u044b; \u0442\u0430\u043a\u0436\u0435 \u0441\u043e\u0442\u0432\u043e\u0440\u0438\u043c \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434 <code>OpenService<\/code>, \u0438\u0437\u0431\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0439 \u0434\u0430\u043b\u0435\u0435 \u043e\u0442 \u0434\u0443\u0431\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043a\u043e\u0434\u0430 \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0449\u0438\u0439 \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440 \u0441\u043b\u0443\u0436\u0431\u044b:<\/p>\n<pre><code class=\"delphi\">interface  uses   Winapi.Windows, System.SysUtils, ..., Winapi.WinSvc;  type   TForm1 = class(TForm)     ...     procedure FormCreate(Sender: TObject);     procedure FormDestroy(Sender: TObject);   private     FSCMHandle: SC_HANDLE;      function OpenService(const Access: DWORD): SC_HANDLE;   end;  ...  implementation  procedure TForm1.FormCreate(Sender: TObject); begin   FSCMHandle := OpenSCManager(nil, nil, 0);   if FSCMHandle = 0 then     RaiseLastOSError; end;  procedure TForm1.FormDestroy(Sender: TObject); begin   CloseServiceHandle(FSCMHandle); end;  function TForm1.OpenService(const Access: DWORD): SC_HANDLE; begin   Result := Winapi.WinSvc.OpenService( FSCMHandle, PChar('QueueService'), Access );   if Result = 0 then     RaiseLastOSError; end;<\/code><\/pre>\n<p>  <\/p>\n<h3>\u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u043a\u043e\u0434<\/h3>\n<p>  \u0417\u0430\u043f\u0443\u0441\u043a \u0441\u043b\u0443\u0436\u0431\u044b \u2013 \u0431\u0435\u0437 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0438 \u0441 \u043d\u0438\u043c\u0438 \u2013 \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u043d\u0435\u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e (\u0438 \u0442\u0430\u043c \u0438 \u0442\u0430\u043c \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u043e\u0434\u043d\u0430 \u0438 \u0442\u0430 \u0436\u0435 WinAPI-\u0444\u0443\u043d\u043a\u0446\u0438\u044f), \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u0438\u0434\u0438\u0442\u0441\u044f \u0440\u0430\u0437\u0443\u043c\u043d\u044b\u043c \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0443 \u0444\u043e\u0440\u043c\u044b \u043c\u0435\u0442\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0437\u0430\u0442\u0435\u043c \u0438 \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c \u043f\u0440\u0438 \u043d\u0430\u0436\u0430\u0442\u0438\u0438 \u043d\u0430 \u043f\u0435\u0440\u0432\u044b\u0435 \u0434\u0432\u0435 \u043a\u043d\u043e\u043f\u043a\u0438:<\/p>\n<pre><code class=\"delphi\">interface  ...  type   TForm1 = class(TForm)     ...   private     ...     procedure RunService(const Parameters: array of string);   end;  ...  implementation  ...  procedure TForm1.RunService(const Parameters: array of string); var   ServiceHandle: SC_HANDLE;   Arguments: array of PChar;   I: Integer; begin   ServiceHandle := OpenService(SERVICE_START);   try     if Length(Parameters) = 0 then       Win32Check( StartService(ServiceHandle, 0, PPChar(nil)^) )     else     begin       SetLength( Arguments, Length(Parameters) );        for I := Low(Parameters) to High(Parameters) do         Arguments[I] := PChar(Parameters[I]);        Win32Check( StartService(ServiceHandle, Length(Arguments), Arguments[0]) );     end;   finally     CloseServiceHandle(ServiceHandle);   end; end;<\/code><\/pre>\n<p>  \u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440-\u043c\u0430\u0441\u0441\u0438\u0432 <code>Parameters<\/code> \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043a\u0430\u043a \u0440\u0430\u0437 \u0442\u043e\u0442 \u043d\u0430\u0431\u043e\u0440 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0441\u043b\u0443\u0436\u0431\u044b, \u043e \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0448\u043b\u0430 \u0440\u0435\u0447\u044c <a href=\"#Service_start_parameters\">\u0432\u044b\u0448\u0435<\/a>. \u0418\u0442\u0430\u043a, \u0438\u043c\u0435\u044f \u043d\u043e\u0432\u044b\u0439 \u043c\u0435\u0442\u043e\u0434, \u043e\u0447\u0435\u043d\u044c \u043b\u0435\u0433\u043a\u043e \u0437\u0430\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u0443 \u043f\u0435\u0440\u0432\u043e\u0439 \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u044b \u043a\u043d\u043e\u043f\u043e\u043a:<\/p>\n<pre><code class=\"delphi\">...  implementation  uses   Services.Queue.Constants;  ...  procedure TForm1.bStartClick(Sender: TObject); begin   RunService([]); end;  procedure TForm1.bStartAndResetErrorsClick(Sender: TObject); begin   RunService([ResetQueueErrorsParam]); end;<\/code><\/pre>\n<p>  \u0414\u0432\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u043a\u043d\u043e\u043f\u043a\u0438 \u0442\u043e\u0436\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u043e\u0431\u043e\u0439\u0442\u0438\u0441\u044c \u0432\u044b\u0437\u043e\u0432\u043e\u043c \u043e\u0434\u043d\u043e\u0433\u043e \u0438 \u0442\u043e\u0433\u043e \u0436\u0435 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0430, \u0441 \u0441\u043e\u0432\u0441\u0435\u043c \u0443\u0436 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0435\u0439:<\/p>\n<pre><code class=\"delphi\">interface  ...  type   TForm1 = class(TForm)     ...   private     ...     procedure SendCommandToService(const Access, ControlCode: DWORD);   end;  ...  implementation  ...  procedure TForm1.SendCommandToService(const Access, ControlCode: DWORD); var   ServiceHandle: SC_HANDLE;   ServiceStatus: TServiceStatus; begin   ServiceHandle := OpenService(Access);   try     Win32Check( ControlService(ServiceHandle, ControlCode, ServiceStatus) );   finally     CloseServiceHandle(ServiceHandle);   end; end;<\/code><\/pre>\n<p>  \u0417\u0434\u0435\u0441\u044c \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 <code>ServiceStatus<\/code> \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435, \u0441\u0430\u043c\u043e\u0435 \u0441\u0432\u0435\u0436\u0435\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0441\u043b\u0443\u0436\u0431\u044b, \u043e\u0434\u043d\u0430\u043a\u043e \u043e\u043d\u043e \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0435 \u043d\u0435\u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0438\u0433\u043d\u043e\u0440\u0438\u0440\u0443\u0435\u0442\u0441\u044f. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, 3-\u044f \u0438 4-\u044f \u043a\u043d\u043e\u043f\u043a\u0438 \u043d\u0430 \u043d\u0430\u0436\u0430\u0442\u0438\u0435 \u0440\u0435\u0430\u0433\u0438\u0440\u0443\u044e\u0442 \u0442\u0430\u043a:<\/p>\n<pre><code class=\"delphi\">...  implementation  ...  procedure TForm1.bResetErrorsClick(Sender: TObject); begin   SendCommandToService(SERVICE_USER_DEFINED_CONTROL, RESET_QUEUE_ERRORS_CONTROL_CODE); end;  procedure TForm1.bStopClick(Sender: TObject); begin   SendCommandToService(SERVICE_STOP, SERVICE_CONTROL_STOP); end;<\/code><\/pre>\n<p>  \u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435, \u043e \u0447\u0451\u043c \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u043a\u0430\u0441\u0430\u0435\u0442\u0441\u044f \u043d\u0435\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0445 \u043a\u043e\u043c\u0430\u043d\u0434 (\u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u043d\u0430\u044f \u0441\u043b\u0443\u0436\u0431\u0430 \u0440\u0435\u0430\u0433\u0438\u0440\u0443\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u043e\u0434\u043d\u0443 \u2013 <code>RESET_QUEUE_ERRORS_CONTROL_CODE<\/code>): \u0435\u0441\u043b\u0438 \u043e\u043d\u0438 \u0432 \u0412\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0431\u043e\u043b\u0435\u0435 \u0441\u043b\u043e\u0436\u043d\u044b\u043c\u0438, \u0442\u0440\u0435\u0431\u0443\u044e\u0449\u0438\u043c\u0438 \u0434\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f <i>\u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e<\/i>, \u0430 \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0444\u0430\u043a\u0442 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0441\u043b\u0443\u0436\u0431\u043e\u0439 \u043e\u0434\u043d\u043e\u0433\u043e \u0447\u0438\u0441\u043b\u043e\u0432\u043e\u0433\u043e \u043a\u043e\u0434\u0430, \u0442\u043e \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0442\u0430\u043a\u0438\u0445 \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u0439 \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u0437\u0430\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u044b <a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%9C%D0%B5%D0%B6%D0%BF%D1%80%D0%BE%D1%86%D0%B5%D1%81%D1%81%D0%BD%D0%BE%D0%B5_%D0%B2%D0%B7%D0%B0%D0%B8%D0%BC%D0%BE%D0%B4%D0%B5%D0%B9%D1%81%D1%82%D0%B2%D0%B8%D0%B5\" rel=\"nofollow noopener noreferrer\">\u043c\u0435\u0436\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043d\u043e\u0433\u043e \u043e\u0431\u043c\u0435\u043d\u0430<\/a> \u2013 <a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%A0%D0%B0%D0%B7%D0%B4%D0%B5%D0%BB%D1%8F%D0%B5%D0%BC%D0%B0%D1%8F_%D0%BF%D0%B0%D0%BC%D1%8F%D1%82%D1%8C\" rel=\"nofollow noopener noreferrer\">\u0440\u0430\u0437\u0434\u0435\u043b\u044f\u0435\u043c\u0443\u044e \u043f\u0430\u043c\u044f\u0442\u044c<\/a>, <a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%9D%D0%B5%D0%B8%D0%BC%D0%B5%D0%BD%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D1%8B%D0%B9_%D0%BA%D0%B0%D0%BD%D0%B0%D0%BB\" rel=\"nofollow noopener noreferrer\">\u043d\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043a\u0430\u043d\u0430\u043b\u044b<\/a> \u0438 \u0442.\u00a0\u043f.<\/p>\n<hr\/>\n<p>  \u0412\u0435\u0441\u044c \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0439 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 \u043c\u043e\u0436\u043d\u043e \u0441\u043a\u0430\u0447\u0430\u0442\u044c <a href=\"https:\/\/disk.yandex.ru\/d\/alEMFiG7VlUtLw\" rel=\"nofollow noopener noreferrer\">\u0437\u0434\u0435\u0441\u044c<\/a>.<\/div>\n<\/div>\n<\/div>\n<div class=\"v-portal\" style=\"display:none;\"><\/div>\n<\/div>\n<p> <!----> <!----><br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/post\/661697\/\"> https:\/\/habr.com\/ru\/post\/661697\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-1\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\u041e\u0434\u0438\u043d \u0438\u0437 \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432 \u0434\u043e\u043c\u043e\u0440\u043e\u0449\u0435\u043d\u043d\u043e\u0439 \u043a\u043b\u0430\u0441\u0441\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0441\u043b\u0443\u0436\u0431 \u043e\u0441\u043d\u043e\u0432\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0438\u0445 \u0436\u0438\u0437\u043d\u0438: \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0437 \u043d\u0438\u0445 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u044e\u0442\u0441\u044f \u0441\u0440\u0430\u0437\u0443 \u0436\u0435 \u043f\u0440\u0438 \u0441\u0442\u0430\u0440\u0442\u0435 <abbr title=\"\u041e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0421\u0438\u0441\u0442\u0435\u043c\u044b\">\u041e\u0421<\/abbr>, \u043e\u0441\u0442\u0430\u0432\u0430\u044f\u0441\u044c \u0430\u043a\u0442\u0438\u0432\u043d\u044b\u043c\u0438 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e (\u0441\u044e\u0434\u0430, \u0441\u043a\u0430\u0436\u0435\u043c, \u043c\u043e\u0436\u043d\u043e \u043e\u0442\u043d\u0435\u0441\u0442\u0438 \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440\u044b \u0438 \u0421\u0423\u0411\u0414), \u0434\u0440\u0443\u0433\u0438\u0435 \u0436\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u044e\u0442\u0441\u044f \u043b\u0438\u0448\u044c \u043f\u0440\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438, \u0434\u0435\u043b\u0430\u044e\u0442 \u0441\u0432\u043e\u0438 \u0430\u0440\u0445\u0438\u0432\u0430\u0436\u043d\u044b\u0435 \u0434\u0435\u043b\u0430 \u0438 \u0441\u0440\u0430\u0437\u0443 \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u044e\u0442\u0441\u044f; \u043f\u0440\u0438 \u044d\u0442\u043e\u043c, \u043d\u0438 \u043e\u0434\u0438\u043d \u0438\u0437 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432 \u0441\u0430\u043c \u043f\u043e \u0441\u0435\u0431\u0435 \u043d\u0435 \u0434\u0435\u043b\u0430\u0435\u0442 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u0441\u043b\u0443\u0436\u0431\u044b \u0441\u043b\u043e\u0436\u043d\u0435\u0435, \u043e\u0434\u043d\u0430\u043a\u043e \u0432\u0442\u043e\u0440\u043e\u0439 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u043e\u0442 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 \u043a\u0430\u043a \u043c\u0438\u043d\u0438\u043c\u0443\u043c \u0435\u0449\u0451 \u0438 \u0443\u043c\u0435\u043d\u0438\u044f <i>\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e<\/i> \u0441\u0442\u0430\u0440\u0442\u043e\u0432\u0430\u0442\u044c, \u0430 \u043f\u0440\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0438 \u0434\u043e\u0441\u0440\u043e\u0447\u043d\u043e \u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c \u0435\u0451 \u0440\u0430\u0431\u043e\u0442\u0443. \u0418\u043c\u0435\u043d\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0439 \u0430\u0441\u043f\u0435\u043a\u0442 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u043b\u0443\u0436\u0431\u043e\u0439, \u043f\u043b\u044e\u0441 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u0432 \u0448\u0442\u0430\u0442\u043d\u043e\u0439 \u043f\u043e\u0441\u0442\u0430\u0432\u043a\u0435 Delphi \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439, \u0438 \u0441\u043f\u043e\u0434\u0432\u0438\u0433 \u0430\u0432\u0442\u043e\u0440\u0430 \u043d\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u043e\u043f\u0443\u0441.<\/p>\n<p>  \u0427\u0442\u043e\u0431\u044b \u0441\u0442\u0430\u0442\u044c\u044f \u0432\u043e\u0441\u043f\u0440\u0438\u043d\u0438\u043c\u0430\u043b\u0430\u0441\u044c \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0439 \u0438 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u043d\u043e\u0439, \u0432 \u043d\u0435\u0439 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u0437\u0430\u0433\u043e\u0442\u043e\u0432\u043a\u0430 (\u043f\u043e\u0447\u0442\u0438 \u0433\u043e\u0442\u043e\u0432\u044b\u0439 \u043a \u0443\u043f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u044e \u0448\u0430\u0431\u043b\u043e\u043d) \u0441\u043b\u0443\u0436\u0431\u044b, \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044e\u0449\u0435\u0439 <i>\u043e\u0447\u0435\u0440\u0435\u0434\u044c \u043d\u0435\u043a\u0438\u0445 \u0437\u0430\u0434\u0430\u0447<\/i> (\u0438\u043b\u0438 \u0437\u0430\u0434\u0430\u043d\u0438\u0439 \u2013 \u043a\u043e\u043c\u0443 \u043a\u0430\u043a \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f); \u043f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0432\u0441\u0435 \u0438\u0437 \u043d\u0438\u0445 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u044b, \u0441\u043b\u0443\u0436\u0431\u0430 \u0442\u0443\u0442 \u0436\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u0435\u0442\u0441\u044f. \u0415\u0441\u043b\u0438 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438, \u0442\u043e \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044c \u043f\u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u0441\u044f \u0441\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0435\u0439:<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/_c\/py\/ow\/_cpyow-dhh-ao2ogijqlzrzxn5s.png\" alt=\"\u0412\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u0441\u043b\u0443\u0436\u0431\u044b \u0441 \u043e\u0447\u0435\u0440\u0435\u0434\u044c\u044e \u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043c\" width=\"600\" data-src=\"https:\/\/habrastorage.org\/webt\/_c\/py\/ow\/_cpyow-dhh-ao2ogijqlzrzxn5s.png\"\/><\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-333152","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/333152","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=333152"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/333152\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=333152"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=333152"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=333152"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}