PDA

Показать полную графическую версию : Запуск из раздела HKLM\...\RunOnce


SANIOK_AV
12-01-2011, 11:08
Доброго времени суток!
В разделе HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce создал задание.
Но заметил что если после перезагрузки входишь под учётной записью, которая входит в группу пользователи, то это задание не выполняется, хотя на его выполнение у пользователя хватает прав (закинув в ...\AllUsers\...\Автозагрузка\ оно выполнилось успешно).
Причём перезагрузившись и войдя под админом это задание выполнилось, то есть когда я заходил под пользователем оно из RunOnce не удалилось.
Как быть в такой ситуации когда хочу разово выполнить задуние под первым вошедшим пользователем, учитывая что он может быть не в админах?
Заранее благодарен!

myhouse_1991
12-01-2011, 11:24
то есть когда я заходил под пользователем оно из RunOnce не удалилось.
А вы не знали, что большинство значений в HKEY_LOCAL_MACHINE могут писать только администраторы? Чтобы выполнить RunOnce, нужно его еще отсюда удалить, на что у пользователя нет прав. Вы можете, конечно, переправить права доступа, если безопасность вас не волнует, но он подействует только на одного пользователя и потом удалиться.

Как быть в такой ситуации когда хочу разово выполнить задуние под первым вошедшим пользователем
Насколько я понял, это новый созданный пользователь? Загрузите куст C:\Documents and Settings\Default User\NTUSER.DAT и отредактируйте. После не забудьте выгрузить. Теперь при создании нового пользователя будут импортироваться еще и ваши настройки в HKEY_CURRENT_USER.

SANIOK_AV
12-01-2011, 13:31
Чтобы выполнить RunOnce, нужно его еще отсюда удалить, на что у пользователя нет прав. »
Честно говоря думал что входящий пользователь читает и выполняет из RunOnce, а удаляется возможно уже из под system.
Спасибо, буду знать.
Насколько я понял, это новый созданный пользователь? »
В том то и дело что нет. :(

myhouse_1991
12-01-2011, 14:00
Честно говоря думал что входящий пользователь читает и выполняет из RunOnce, а удаляется возможно уже из под system.
Его explorer.exe выполняет.

В том то и дело что нет.
Подождём других - может кто-то разбирался, как добавить сразу для всех существующих пользователей настройку в пользовательский куст.

Как другой вариант: можно сделать bat'ник, который проверяет пользовательскую переменную. Если она установлена на какое-то значение - выполнить следующие и поменять в конце переменную, если нет - ничего не делать.

SANIOK_AV
12-01-2011, 14:38
Его explorer.exe выполняет. »
Будем знать, спасибо!
Подождём других - может кто-то разбирался, как добавить сразу для всех существующих пользователей настройку в пользовательский куст. »
Учитывая то, что "разовый" (RunOnce) запуск будет добавляться когда нужный нам пользовательский куст будет занят текущим пользователем.
Как другой вариант: можно сделать bat'ник, который проверяет пользовательскую переменную. Если она установлена на какое-то значение - выполнить следующие и поменять в конце переменную, если нет - ничего не делать. »
Если можно, поподробнее об этом варианте.

Petya V4sechkin
12-01-2011, 14:40
как добавить сразу для всех существующих пользователей настройку в пользовательский куст
Применение твиков реестра ко всем учетным записям (http://oszone.net/6167)

SANIOK_AV
12-01-2011, 14:54
Применение твиков реестра ко всем учетным записям »
Но ведь куст текущего пользователя будет занят.
А задание на запуск будет добавляться не от его имени.
т.е. машина запущена под User, а задание будет добавляться от Admin, и в итоге из под Admin не получится загрузить куст реестра User, т.к. он уже загружен. :(

myhouse_1991
12-01-2011, 17:39
Если можно, поподробнее об этом варианте.

Примерно так:
@echo off
if defined NoRunThis GOTO :exit
REG ADD "HKCU\Environment" /v NoRunThis /t REG_EXPAND_SZ /d 1
echo some actions here
:exit
Добавляете батник в ...\AllUsers\...\Автозагрузка. Он будет всё время запускаться, но выполнит указанные действия до :exit лишь 1 раз. После нужно удалить пользовательскую переменную или использовать другую.

SANIOK_AV
13-01-2011, 00:32
Примерно так: »
Интересный вариант, Спасибо!

P.S.: А вот интересно можно как то запуская что то от имени другого пользователя узнать под кем в данное время загружена система?

Petya V4sechkin
13-01-2011, 12:34
от имени другого пользователя узнать под кем в данное время загружена система?
Есть команда Qwinsta.exe

setwolk
13-01-2011, 14:28
Petya V4sechkin,
Если будет подключен хотя бы еще один пользователь, с помощью этой команды система его покажет?!

SANIOK_AV
13-01-2011, 15:20
Есть команда Qwinsta.exe »
Спасибо!
Но на некоторых машинах выдаёт:
Ошибка 1702 получения имен сеансов
Ошибка [1702]:Недопустимый дескриптор привязки.
Может какая-нибудь служба не запущена?

Petya V4sechkin
13-01-2011, 15:26
Может какая-нибудь служба не запущена?
Службы терминалов, наверное.

SANIOK_AV
13-01-2011, 15:35
Службы терминалов, наверное. »
Таки да...(((
А так чтоб Службы терминалов не запускать можно как то узнать под каким пользователем ОС загружена?

Petya V4sechkin
13-01-2011, 15:37
SANIOK_AV, попробуйте:
WMIC Process Where "Name = 'explorer.exe'" Call GetOwner

SANIOK_AV
13-01-2011, 16:21
попробуйте:
Код:
WMIC Process Where "Name = 'explorer.exe'" Call GetOwner »
Если компьютер загружен под учётной записью User, то применив приведеный Вами код от учётной записи User получаем:
Параметры вывода:
instance of __PARAMETERS
{
Domain = "comp1";
ReturnValue = 0;
User = "User";
};
Если же применяем код от учётной записи Admin (компьютер загружен под учётной записью User) то получаем:
Параметры вывода:
instance of __PARAMETERS
{
ReturnValue = 2;
};
:(




© OSzone.net 2001-2012