Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Microsoft Windows 2000/XP (http://forum.oszone.net/forumdisplay.php?f=6)
-   -   Запуск из раздела HKLM\...\RunOnce (http://forum.oszone.net/showthread.php?t=196425)

SANIOK_AV 12-01-2011 11:08 1586752

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

myhouse_1991 12-01-2011 11:24 1586764

Цитата:

Цитата SANIOK_AV
то есть когда я заходил под пользователем оно из RunOnce не удалилось.

А вы не знали, что большинство значений в HKEY_LOCAL_MACHINE могут писать только администраторы? Чтобы выполнить RunOnce, нужно его еще отсюда удалить, на что у пользователя нет прав. Вы можете, конечно, переправить права доступа, если безопасность вас не волнует, но он подействует только на одного пользователя и потом удалиться.

Цитата:

Цитата SANIOK_AV
Как быть в такой ситуации когда хочу разово выполнить задуние под первым вошедшим пользователем

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

SANIOK_AV 12-01-2011 13:31 1586866

Цитата:

Цитата myhouse_1991
Чтобы выполнить RunOnce, нужно его еще отсюда удалить, на что у пользователя нет прав. »

Честно говоря думал что входящий пользователь читает и выполняет из RunOnce, а удаляется возможно уже из под system.
Спасибо, буду знать.
Цитата:

Цитата myhouse_1991
Насколько я понял, это новый созданный пользователь? »

В том то и дело что нет. :(

myhouse_1991 12-01-2011 14:00 1586889

Цитата:

Цитата SANIOK_AV
Честно говоря думал что входящий пользователь читает и выполняет из RunOnce, а удаляется возможно уже из под system.

Его explorer.exe выполняет.

Цитата:

Цитата SANIOK_AV
В том то и дело что нет.

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

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

SANIOK_AV 12-01-2011 14:38 1586915

Цитата:

Цитата myhouse_1991
Его explorer.exe выполняет. »

Будем знать, спасибо!
Цитата:

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

Учитывая то, что "разовый" (RunOnce) запуск будет добавляться когда нужный нам пользовательский куст будет занят текущим пользователем.
Цитата:

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

Если можно, поподробнее об этом варианте.

Petya V4sechkin 12-01-2011 14:40 1586916

Цитата:

Цитата myhouse_1991
как добавить сразу для всех существующих пользователей настройку в пользовательский куст

Применение твиков реестра ко всем учетным записям

SANIOK_AV 12-01-2011 14:54 1586926

Цитата:

Цитата Petya V4sechkin
Применение твиков реестра ко всем учетным записям »

Но ведь куст текущего пользователя будет занят.
А задание на запуск будет добавляться не от его имени.
т.е. машина запущена под User, а задание будет добавляться от Admin, и в итоге из под Admin не получится загрузить куст реестра User, т.к. он уже загружен. :(

myhouse_1991 12-01-2011 17:39 1587057

Цитата:

Цитата SANIOK_AV
Если можно, поподробнее об этом варианте.

Примерно так:
PHP код:

@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 1587371

Цитата:

Цитата myhouse_1991
Примерно так: »

Интересный вариант, Спасибо!

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

Petya V4sechkin 13-01-2011 12:34 1587650

Цитата:

Цитата SANIOK_AV
от имени другого пользователя узнать под кем в данное время загружена система?

Есть команда Qwinsta.exe

setwolk 13-01-2011 14:28 1587730

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

SANIOK_AV 13-01-2011 15:20 1587771

Цитата:

Цитата Petya V4sechkin
Есть команда Qwinsta.exe »

Спасибо!
Но на некоторых машинах выдаёт:
Код:

Ошибка 1702 получения имен сеансов
Ошибка [1702]:Недопустимый дескриптор привязки.

Может какая-нибудь служба не запущена?

Petya V4sechkin 13-01-2011 15:26 1587776

Цитата:

Цитата SANIOK_AV
Может какая-нибудь служба не запущена?

Службы терминалов, наверное.

SANIOK_AV 13-01-2011 15:35 1587783

Цитата:

Цитата Petya V4sechkin
Службы терминалов, наверное. »

Таки да...(((
А так чтоб Службы терминалов не запускать можно как то узнать под каким пользователем ОС загружена?

Petya V4sechkin 13-01-2011 15:37 1587789

SANIOK_AV, попробуйте:
Код:

WMIC Process Where "Name = 'explorer.exe'" Call GetOwner

SANIOK_AV 13-01-2011 16:21 1587819

Цитата:

Цитата Petya V4sechkin
попробуйте:
Код:
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;
};

:(


Время: 16:22.

Время: 16:22.
© OSzone.net 2001-