Страница 1 из 1

.bat, runas и .vbs

Добавлено: 2012-06-01 14:35:28
paran0id
Задача - в логон-скрипте пользователя запускать vbs от имени администратора.

Реализовал следующим батником:

Код: Выделить всё

@echo руками не трогать
@echo пароль | runas /netonly /user:домен\учетка_с_правами_админа "cscript \"\\путь\к\скрипту\install.vbs\""
Проблема - runas не жрёт пароль.

Если в cmd сказать

Код: Выделить всё

runas /netonly /user:домен\учетка_с_правами_админа "cscript \"\\путь\к\скрипту\install.vbs\""
то запрашивает пароль и успешно отрабатывает.

Скрипт типа

Код: Выделить всё

@echo руками не трогать
@echo пароль | runas /netonly /user:домен\учетка_с_правами_админа cmd
успешно запускает cmd от имени учетки_с_правами_админа.

Т.е. echo пароль не проходит в случае выполнения через runas более сложных команд. Как это обойти? По возможности, без установки на пользовательские машины дополнительного ПО.

Re: .bat, runas и .vbs

Добавлено: 2012-06-01 16:05:33
snorlov
а если вместо cmd указать 11.cmd, к примеру или *.bat, он его не запустит?

Re: .bat, runas и .vbs

Добавлено: 2012-06-01 16:25:48
paran0id
Пробовал из первого скрипта запускать bat или exe, пинающий собственно vbs. Скрипт vbs начинал выполняться, но почему-то падал через секунду.

Re: .bat, runas и .vbs

Добавлено: 2012-06-04 8:13:04
Alvares
а если заюзать

Код: Выделить всё

runas /savecred
?

Re: .bat, runas и .vbs

Добавлено: 2012-06-06 9:37:04
paran0id
тогда всё равно один раз пароль вводить придётся

Re: .bat, runas и .vbs

Добавлено: 2012-06-06 12:58:16
Alvares
Можно первый запуск сделать с паролем (в смысле plain-text, как параметр runas). А потом убрать пароль из параметров

Re: .bat, runas и .vbs

Добавлено: 2012-06-06 14:23:41
paran0id
Можно первый запуск сделать с паролем (в смысле plain-text, как параметр runas)
Это как? Нет у runas такого параметра.

В общем, пока сделал через startup-скрипт (при запуске машины, а не при входе пользователя - там от админа работает).

Re: .bat, runas и .vbs

Добавлено: 2012-06-06 15:54:55
FreeBSP
параметры - [user] [domain] [password] [cmd]
вместо домена точка, если пользователь локальный
хеловорлд на вбс кушает

Код: Выделить всё

runas.exe _USER_ . _PASS_ "cscript f:\hw.vbs"
.

Код: Выделить всё

#include "stdafx.h"
#include <windows.h>
#include <stdio.h>
#include <userenv.h>

void DisplayError(LPWSTR pszAPI)
{
    LPVOID lpvMessageBuffer;

    FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | 
        FORMAT_MESSAGE_FROM_SYSTEM,
        NULL, GetLastError(), 
        MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), 
        (LPWSTR)&lpvMessageBuffer, 0, NULL);

    //
    //... now display this string
    //
    wprintf(L"ERROR: API        = %s.\n", pszAPI);
    wprintf(L"       error code = %d.\n", GetLastError());
    wprintf(L"       message    = %s.\n", (LPWSTR)lpvMessageBuffer);

    //
    // Free the buffer allocated by the system
    //
    LocalFree(lpvMessageBuffer);

    ExitProcess(GetLastError());
}


int _tmain(int argc, WCHAR* argv[])
{

    PROCESS_INFORMATION pi = {0};
    STARTUPINFO         si = {0};
    WCHAR               szUserProfile[256] = L"";

    si.cb = sizeof(STARTUPINFO);
    
    if (argc != 5)
    {
		DisplayError(L"qe");
        wprintf(L"Usage: %s [user] [domain] [password] [cmd]", argv[0]);
        wprintf(L"\n\n");
        return 1;
    }
	//DisplayError(L"qe");
    if (!CreateProcessWithLogonW(argv[1], argv[2], argv[3], 
			LOGON_WITH_PROFILE, NULL,
			argv[4],
			CREATE_DEFAULT_ERROR_MODE |
			CREATE_NEW_CONSOLE, NULL, NULL,
            &si, &pi))
        DisplayError(L"CreateProcessWithLogonW");

    CloseHandle(pi.hProcess);
    CloseHandle(pi.hThread);
	return 0;
}

Re: .bat, runas и .vbs

Добавлено: 2012-06-06 17:56:28
FreeBSP
попинайте что ли =)

Re: .bat, runas и .vbs

Добавлено: 2012-06-07 8:21:11
Alvares
paran0id писал(а):
Можно первый запуск сделать с паролем (в смысле plain-text, как параметр runas)
Это как? Нет у runas такого параметра.

В общем, пока сделал через startup-скрипт (при запуске машины, а не при входе пользователя - там от админа работает).
psexec не поможет? Там точно есть параметр "пароль".
Или что-то типа

Код: Выделить всё

echo PASSWD | runas /user:USER@DOMAIN command
или как-там-его-это-перенаправление

Re: .bat, runas и .vbs

Добавлено: 2012-06-07 9:05:06
FreeBSP
тык

Код: Выделить всё

runas.exe USER DOMAIN PASSWORD COMMAND

Re: .bat, runas и .vbs

Добавлено: 2012-06-07 16:17:08
Alvares
Alvares писал(а):Или что-то типа

Код: Выделить всё

echo PASSWD | runas /user:USER@DOMAIN command
или как-там-его-это-перенаправление
Сорри, сам дятел, прочел невнимательно. Ну или предложенным выше самописным или pstools пользоваться. Чет нет мыслей боле. Админа нет, попинать его на предмет, как у нас. Через недельку тока если что.

Re: .bat, runas и .vbs

Добавлено: 2012-06-08 15:28:19
paran0id
проще оказалось сделать через стартап-скрипт (только важно, чтобы шара с файлами, к которым vbs обращается, была доступа пользователям не_домена, т.к. стартап-скрипт запускается от локальной учетки)

Re: .bat, runas и .vbs

Добавлено: 2012-07-30 15:01:49
rendevor
Что значит не хавает?
понятное дело, что через пайп ранас не хавает, но если один раз ввести пароль, с ключем сейвкред, то этот пароль сохраняется в хранилище. И если потом запускать этот скрипт от этого пользователя, с этим же ключем, то будет использоваться сохраненный пароль.
У меня ж работает :)

Код: Выделить всё

my $errcode = system("runas /user:Administrator /savecred \"net start \\\"hab$HAB_GROUP JBOSS\\\" \" > nul 2>&1");