990x.top
Простой компьютерный блог для души)
CreateExplorerShellUnelevatedTask появилось в автозагрузке — что это?
Планировщик задач — место, где система и софт хранят служебные задачи, которые могут выполняться при загрузке Windows. Самые частые задачи — по поводу обновления ПО, например Хром, Яндекс браузер — там создают задания. Иногда задания создают и вирусы.
CreateExplorerShellUnelevatedTask — что за задача в планировщике?
Сразу коротко ответ:
Системное задание, которое запрещает запуск explorer.exe (Проводник) с повышенными правами.
explorer.exe — оболочка Windows, программа Проводник. Все файлы, папки, меню Пуск, трей, панель задач — работает при помощи Проводника.
На сайте Microsoft сказано что данная задача — программа Проводник, не вирус. В принципе логично, потому что в свойствах задачи указан путь:
CreateExplorerShellUnelevatedTask может быть в автозагрузке при обычном режиме. Это нужно, чтобы explorer.exe не запускался с повышенными правами (небезопасно). Однако если использовать безопасный режим — задание работать не будет и Explorer запуститься с повышенными правами.
Поэтому можно сделать вывод — отключать не стоит. Хотя на форуме Microsoft пишут что можно:

Важно: у некоторых пользователей данное задание тормозит загрузку системы.
CreateExplorerShellUnelevatedTask — можно ли отключить?
Мое мнение — если ПК работает нормально, отключать не нужно.
Однако при желании — можно:
Если на ПК установлен хороший антивирус — то отключить можно. Что значит хороший? Например Avast, однако лично я советую Kaspersky, тем более что есть бесплатная версия.
Неправомерный доступ к ПК
Добрый вечер. Мой компьютер все время взламывают хакеры. Помогите расшифровать логи gmer. Нет ли там шпионской программы или трояна. Lsass.exe, svchost.exe, spoolsv.exe появляются при включении фаерволла на максимальную защиту и исчезают при отключении.
Мой компьютер все время взламывают хакеры.
—
меня вот что возмутило. что даже не начинают толком диалог сразу дампы. © alehas777
Поддержка Windows Vista корпорацией Microsoft прекращена 11 апреля 2017 года.
Мой компьютер все время взламывают хакеры.
В краже личной и рабочей информации с ПК. Знакомые это делают. Даже не скрывают. Говорят я их заложница. Никак не могу закрыть им доступ к ОС.
На компе стоят: антивирус ESET NOD32+Comodo Internet Security+Tor browser (запускается в виртуальной среде Comodo Sandbox). В фаерволе запрещены все входящие, а из исходящих разрешены только Tor и svchost.exe. Все равно как-то пролазят.
Поддержка Windows Vista корпорацией Microsoft прекращена 11 апреля 2017 года.
У меня Windows 10. Программа запущена в режиме совместимости.
Давайте для начала вы соберете логи, указанные в сообщении от робота. Потом будем разбираться с гмером, если потребуется. Не исключено, что у вас тупо стоит какой-нибудь RAdmin, или похожая программа удаленного администрирования.
В краже личной и рабочей информации с ПК. Знакомые это делают. Даже не скрывают. Говорят я их заложница. Никак не могу закрыть им доступ к ОС.
На компе стоят: антивирус ESET NOD32+Comodo Internet Security+Tor browser (запускается в виртуальной среде Comodo Sandbox). В фаерволе запрещены все входящие, а из исходящих разрешены только Tor и svchost.exe. Все равно как-то пролазят.
В краже личной и рабочей информации с ПК. Знакомые это делают. Даже не скрывают. Говорят я их заложница. Никак не могу закрыть им доступ к ОС.
На компе стоят: антивирус ESET NOD32+Comodo Internet Security+Tor browser (запускается в виртуальной среде Comodo Sandbox). В фаерволе запрещены все входящие, а из исходящих разрешены только Tor и svchost.exe. Все равно как-то пролазят.
Отключила на время сканирования, как указано в инструкции
Тема закрыта из-за неактивности пользователя.
1. Если Вы подозреваете у себя на компьютере вирусную активность и хотите получить помощь в этом разделе,
2. Если у Вас при включении компьютера появляется окно с требованием перечислить некоторую сумму денег и при этом блокируется доступ к рабочему столу,
— попытайтесь найти коды разблокировки здесь https://www.drweb.com/xperf/unlocker/
— детально опишите как выглядит это окно (цвет, текст, количество кнопок, появляется ли оно до появления окна приветствия Windows или сразу же после включении компьютера);
— дождаться ответа аналитика или хелпера;
3. Если у Вас зашифрованы файлы,
Внимание! Услуга по расшифровке файлов предоставляется только лицензионным пользователям продуктов Dr.Web, у которых на момент заражения была установлена коммерческая лицензия Dr.Web Security Space не ниже версии 9.0, Антивирус Dr.Web для Windows не ниже версии 9.0 или Dr.Web Enterprise Security Suite не ниже версии 6.0. подробнее.
Что НЕ нужно делать:
— лечить и удалять найденные антивирусом вирусы в автоматическом режиме или самостоятельно. Можно переместить всё найденное в карантин, а после спросить специалистов или не предпринимать никаких действий, а просто сообщить название найденных вирусов;
— переустанавливать операционную систему;
— менять расширение у зашифрованных файлов;
— очищать папки с временными файлами, а также историю браузера;
— использовать самостоятельно без консультации с вирусным аналитиком Dr. Web дешифраторы из «Аптечки сисадмина» Dr. Web;
— использовать дешифраторы рекомендуемые в других темах с аналогичной проблемой.
Для этого проделайте следующее:
Завещание мистера Гейтса, или как запустить проводник с полными правами
История мисс Уинсли
Девушка начала свой рассказ, собираясь с силами через каждые две-три фразы и не переставая нервно теребить в руках платочек. Отец ее умер, когда она была еще крохой, и мать вышла замуж повторно за некого мистера Гейтса. Тот был весьма богат, но особых щедрот падчерице не перепадало.
Три года назад ее мать умерла, а недавно этот мир покинул и отчим. Почти все свое состояние он завещал фонду по борьбе с пиратскими сборками Windows. Девушке причиталась лишь малая толика, которой, впрочем, ей бы хватило на годы безбедного существования. Однако, то ли из вредности, то ли просто в шутку, мистер Гейтс включил в завещание особый пункт.
Чтобы получить свою долю наследства, мисс Уинсли должна была найти способ запустить проводник Windows 7 с правами администратора, не отключая контроль учетных записей и не завершая процесс explorer.exe. Причем на поиски решения ей отводилось ровно неделя.
За предыдущие шесть дней девушка сбилась с ног, пытаясь найти решение. Она обращалась к самым известным детективам, но все они говорили ей, что это невозможно.
Холмс задумчиво посмотрел на нее:
— Обычно, я избегаю дел, которые нужно решить к определенному сроку. Но поскольку все ваши карты уже биты, я возьмусь за это дело. Думаю, доктор Ватсон мне в этом поможет.
Когда девушка ушла, Холмс не спеша раскурил трубку и, наконец, обратился ко мне:
— Ватсон, вы сияете как бляха того усатого «бобби», что стоит сейчас на углу. Вам что, известно решение?
В тупике
Не скрывая торжества, я подвинул Холмсу ноутбук с открывшимся окном проводника.
— Друг мой, надеюсь, вы понимаете, что окно проводника все-таки было открыто с обычными правами?
— Гм… погодите Холмс, но этот способ точно работал в Windows XP!
Я начал догадываться, почему за шесть дней никто не смог помочь мисс Уинсли. Вид у меня был, наверное, не слишком радостный.
О чем рассказал Process Explorer
Холмс с сожалением взглянул на меня через кольцо дыма:
— Windows XP… У вас есть Process Explorer? Хочу показать вам одну любопытную вещь.
Я, как и любой опытный врач, всегда таскаю в саквояже инструменты компании Sysinternals.
— Ватсон, когда вы запустили проводник в отдельном процессе, повышения прав не произошло, и у процесса остался средний уровень целостности. Но посмотрите внимательнее.
— Process Explorer показывает, что отдельный процесс проводника запущен из-под процесса svchost.exe командой:
Холмс навел курсор на процесс svchost.exe, и я увидел, что это служба запуска процессов DCOM-сервера. Он подвинул мне ноутбук, откинулся на спинку кресла и загадочно улыбнулся. Было непонятно, знает ли он точное решение, но направление для поисков он мне показал.
Поиски в реестре
Я открыл редактор реестра и запустил поиск по идентификатору <75dff2b7-6936-4c06-a8bb-676a7b00b24b>, который используется в командной строке проводника. Он привел меня в один из подразделов HKEY_CLASSES_ROOT\CLSID. Исходя из названия параметра по умолчанию, подраздел отвечал за запуск нескольких процессов проводника одновременно.
В параметре AppID содержался другой идентификатор, очевидно, относящийся к приложению «Проводник». Дальнейший поиск по нему в реестре привел меня в раздел
Я открыл браузер, намереваясь поискать в Интернете, но Холмс внезапно остановил меня:
— Минутку, Ватсон! Иногда полезно подумать самому, пока Гугл не отучил вас от этого достойного занятия. Вы слышали про оснастку «Службы компонентов»?
Секретные службы [компонентов]
Холмс нашел оснастку поиском в меню «Пуск» (впоследствии я узнал, что можно еще запустить исполняемый файл dcomcnfg.exe).
Холмс открыл свойства компонента, и я увидел, что на вкладке «Удостоверение» предусмотрен выбор учетной записи для запуска процессов проводника.
Увидев и другие варианты, я предположил, что этот параметр ограничивает запуск проводника текущими правами учетной записи, которые даже у администратора являются обычными.
— Получается, нужно попробовать установить параметр «Запускающий пользователь». Однако почему все опции заблокированы, Холмс?
— Это же элементарно, Ватсон!
Смена типа учетной записи для запуска проводника
Холмс переключился в редактор реестра.
Он ловко получил доступ к разделу реестра и перезапустил оснастку. Чудесным образом в свойствах компонента Elevated-Unelevated Explorer Factory появилась возможность изменить тип учетной записи!
Затем Холмс снова вернулся в раздел HKEY_CLASSES_ROOT\AppID\
Невозмутимо попыхивая трубкой, Холмс вернул исходные права и владельца раздела реестра на свои места, пояснив при этом:
Он подвинул мне ноутбук, давая понять, что проблема мисс Уинсли решена, и ехидно добавил:
— Кстати, Ватсон, теперь вовсе необязательно завершать все процессы проводника. Просто используйте ваш недокументированный ключ.
Запуск проводника с полными правами
— Значит, «Текущий пользователь» (Interactive User) соответствует маркеру безопасности с обычными правами, который по умолчанию выдается даже администратору?
— Абсолютно верно, Ватсон! Вспомните историю про два билета на спектакль. Когда команда выполняется от имени администратора, «Запускающий пользователь» уже соответствует маркеру безопасности администратора. Поэтому теперь у проводника высокий уровень целостности, а его права полноценно повысились.
— Можно вызывать мисс Уинсли?
— Конечно, Ватсон! И думаю, девушке будет приятно, если вы добавите ей в контекстное меню пункт для запуска проводника от имени администратора. Это послужит наглядным объяснением для распорядителей последней воли мистера Гейтса.
Пункт контекстного меню для запуска проводника с полными правами
Едва переступив порог, мисс Уинсли воскликнула:
— Джентльмены, неужели вы смогли найти решение всего за час?
— Позвольте ваш нетбук, леди. Доктор Ватсон покажет вам решение.
Мисс Уинсли достала из объемной сумочки серебристый VAIO и протянула мне. Уже через пару минут я создал в контекстном меню пункт для открытия папки от имени администратора.
Windows Registry Editor Version 5.00 ;Контекстное меню папки [HKEY_CLASSES_ROOT\Directory\shell\ExplorerElevated] @=»Открыть папку от имени администратора» ;Отображение пункта только при нажатой клавише SHIFT «Extended»=»» «Icon»=»imageres.dll,73″ [HKEY_CLASSES_ROOT\Directory\shell\ExplorerElevated\command] @=»nircmd.exe elevate explorer.exe /separate \»%1\»» ;Контекстное меню фона папки и рабочего стола [HKEY_CLASSES_ROOT\Directory\Background\shell\ExplorerElevated] @=»Открыть папку от имени администратора» ;Отображение пункта только при нажатой клавише SHIFT «Extended»=»» «Icon»=»imageres.dll,73″ [HKEY_CLASSES_ROOT\Directory\Background\shell\ExplorerElevated\command] @=»nircmd.exe elevate explorer.exe /separate \»%V\»»
— Мисс Уинсли, выбрав этот пункт и согласившись с запросом контроля учетных записей, вы откроете папку проводника с полными правами. Все программы, запущенные из этого окна проводника, тоже будут иметь права администратора. Перетаскивание файлов в программы с любыми правами также будет работать.
Впервые за время пребывания на Бейкер-стрит мисс Уинсли улыбнулась, и ее глаза засветились от счастья. Прижимая к груди нетбук, она осыпала меня словами благодарности, заставив даже покраснеть под ироничным взглядом Холмса.
Я замер, но Холмс отреагировал моментально:
— Но ведь в завещании не сказано, что вы должны запускать проводник с полными правами в Windows vNext?
Девушка отрицательно покачала головой, подарила нам еще одну улыбку и скрылась за дверью.
А я не смог удержаться от вопроса:
— Откуда у вас такие глубокие познания в Windows, Холмс?
— Это элементарно, Ватсон! Я подписан на вестник «Think Outside the Box!», благодаря которому регулярно пополняю свой багаж знаний. Да и разобраться в Windows все-таки проще, чем научиться играть на скрипке!
How can I launch an unelevated process from my elevated process, redux
Some time ago, I showed how you can launch an unelevated process from an elevated process by asking Explorer to launch the program on your behalf.
There’s another way which is a bit more direct, but it assumes that the thing you want to do can be done with a direct CreateProcess call. In other words, if you need the system to look up the user’s file associations or default browser, then this technique is not for you.
The idea is to take advantage of PROCESS_ CREATE_ PROCESS access and the accompanying PROC_ THREAD_ ATTRIBUTE_ PARENT_ PROCESS process thread attribute:
The lpValue parameter is a pointer to a handle to a process to use instead of the calling process as the parent for the process being created. The process to use must have the PROCESS_CREATE_PROCESS access right.
Attributes inherited from the specified process include handles, the device map, processor affinity, priority, quotas, the process token, and job object. (Note that some attributes such as the debug port will come from the creating process, not the process specified by this handle.)
Basically, this lets you tell the CreateProcess function, “Hey, like, um, pretend that other guy over there is creating the process.”
Here’s a Little Program to demonstrate. Remember that Little Programs do little to no error checking so that they can demonstrate the underlying technique without distractions.
We start by getting the shell window and using that to identify the process that is responsible for the shell.
We then use that process ID to open the process with the magic PROCESS_ CREATE_ PROCESS access.
We then ask the system how much memory is required to create a PROC_ THREAD_ ATTRIBUTE_ LIST that holds one attribute, and allocate it.
We initialize the newly-allocated attribute list and update it with our process handle, saying that we want this to be the parent for the process we’re about to create.
We set up a STARTUPINFOEX structure like usual, but we take the extra step of setting the lpAttributeList to point to the attribute list.
A little bit of cleaning up, and we’re done.
Raymond Chen
Read next
15 comments
Little programs do no error checking.
Anybody using this needs to handle GetWindowThreadProcessId failing. If it fails you won’t be able to de-elevate using this technique. I can’t say for all cases but in my experience starting the child elevated is better than not at all.
In the now-deleted comments of the prior thread the conclusion was the best way was to start your program non-elevated, elevate a child to do whatever (using a manifest), and having the non-elevated parent start the non-elevated child. We may improve as follows: pass your own pid as a command line argument to the child being elevated and use that PID rather than the shell PID here.
“the shell process (usually explorer.exe )” What is your/the shell teams stance on 3rd-party shells? How to write a custom shell has never been documented and making a fully functioning one gets harder with each new Windows version. To make GetShellWindow and friends work correctly you have to call undocumented functions etc.
So that’s what the PROCESS_ CREATE_ PROCESS permission is for! The documentation team really needs to explain this stuff better. In particular, which process needs the permission. Or is it process handle? The documentation is a bit unclear.
PROCESS_CREATE_PROCESS is explained a bit better at OB_PRE_CREATE_HANDLE_INFORMATION structure: “Create a new child process of the process.”
I always wondered if you could use Task Scheduler to start a process as the login user. (I also wonder what happens if the user has killed Explorer and started an elevated instance of it, or even worse as someone else, in which case asking the shell to start a program doesn’t unelevate the process.)
Hi Raymond, I know you sometimes write entries about VS, compilers etc, so I wondered if this story could be interesting for you. https://developercommunity.visualstudio.com/content/problem/409959/cant-order-items-with-string-collection-editor.html?childToView=547467 Check the 2nd answer from Merrie McGaw. I can hardly express without swear words all the emotions this story sparks in me. IMHO, this is beyond the definition of absurd.
This answer: https://developercommunity.visualstudio.com/comments/547467/view.html
?
It sounds to me like the overriding directive was to make Visual Studio more accessible. That’s a worthy goal.
Unfortunately someone, who clearly doesn’t use the dialog you’re talking about, reimplemented it to support the main directive and the complete expense of people who were already using the dialog and understood its purpose.
What’s nice to see is that Microsoft have at least indicated they can see the problem, explained why it came about (finally! that explanation could’ve reduced some stress on the many commenters so the change didn’t appear so random), and have promised a fix. The fix sounds like the best of all worlds – you get the text editor back AND it’s going to be accessible.
It does sound like it might take a while though…
You’re using CreateProcessW, while passing STARTUPINFOEX, which I presume is defined as _STARTUPINFOEXA in your case since your int main takes char instead of wchar_t. Is that something to be worried about? Yay unicode!
You can tell the compiler to use the Unicode versions of the Windows API without using the wide entrypoint.
I agree that since CreateProcessW was used explicitly then it would be better to use STARTUPINFOEXW, but as it is, if UNICODE is defined then STARTUPINFOEX will be a typedef of _STARTUPINFOEXW.
Going back to the spirit of the blog entry that led to this, is there a way we can just use the session token to create the new process exactly like an unelevated user? The only deterministic way of using the idea on this page is to always start a process chain with an unelevated stub zombie process so that you always have it available. Then inherit the full-access process handle to the “real” process that actually does the work so that you’re guaranteed to have a secure working handle without a risky OpenProcess call.
As I saw your article I was very excited, because I’m looking for a working way to launch an unelevated process from an elevated process already for a long time. I used your code (enhanced with error checking) and was able to spawn an unelevated process. That’s great. But I made the observation, that the unelevated process runs in a compatibility mode, the environment variable __COMPAT_LAYER in the unelevated process has the value “Installer”. Is there a way to prevent enabling the compatibility mode (for the new process) or can you explain, why the compatibility mode ist applied in this scenario? As I don’t know about the impact of the compatibility mode on the process, I can’t decide if it is safe to ignore it. Thanks
There’s a big caveat to this technique. If the user has used “runas” or CreateProcessAsUser or similar to launch your process (or some parent of your process) under a different user account from the shell, then this would probably either fail with a permissions error or work but launch the child process under the original user account (which might annoy the actual user, since they presumably had a reason to switch user accounts in the first place). There also might be security problems if you then try to communicate between the two processes.
Like Joshua Hudson stated, I’ve found that the best practice is to launch unelevated, then launch an elevated child that communicates back to its still-not-elevated parent if need be, rather than trying the reverse. Although that can still be defeated by “runas”, in this case if the user chooses to run the original process as administrator — but that probably falls into the “doing what the user requested” bucket, so it’s still better than the above.
Otherwise, the only other solution that seems safe is if Windows provided an API to acquire the corresponding non-elevated filtered token from a process’s current token, and then use CreateProcessAsUser to launch unelevated. (It is probably currently possible to perform a combination of existing API calls to recreate a new filtered token, but since AFAIK the difference between the elevated and unelevated tokens is not entirely specified, that seems less safe than Windows providing an explicit API to do it.) Although as Raymond pointed out in the original blog post, this is not necessarily correct either, if elevation occurred with credentials.
Another possibility (if you don’t want an unelevated launchpad process) is to get your parent process’s token (at startup), then later use CreateProcessAsUser with that token to launch the unelevated process. (Caveat: I haven’t checked if this actually works — there are probably cross-user permissions issues — and there’s a race condition if your parent process terminates before you have a chance to capture its token. It’s also a bit tricky to get your parent process without its cooperation, which makes the launchpad process more attractive anyway.)
Also, curse this new blog system and its lack of proper paragraph formatting! (And its erasure of all the comments on previous blog posts, which were often very useful.)
















