Есть ли возможность в LogOn скрипте использовать привелегированные права относительно возможностей входящего юзера? Суть: нужно создавать файлы в недоступных для пользователя местах по NTFS правам, но с его именем. Н-р - logon%Username%.log
» Автоматизация администрирования
> Суть: нужно создавать файлы в недоступных для пользователя местах по NTFS правам
если по сути, то это можно решать следующим образом -
На NTFS делается папка с правом (для пользователя) просмотра каталога, созданием файлов (и папок, если надо), возможность записи в файл, но (!!!) без права чтения файла.
В этом случае пользователь легко создает и записывает данные в файл, но просмотреть файлы не может.
у меня вообще логи с логон скриптов пишутся таким образом
1. На сервере загарен ресурс с полным доступом для всех пользователей, \\server\logs (можешь \\server\logs$)
2. На уровне NTFS стоят все права, за исключением удаления файлов и каталогов и просмотра файлов.
3. В результате логонные скрипты при необходимости создают любые папки и файлы, записывают в них даннын, однако посмотреть логи никто из пользователей не может. Максимум, что он может увидеть, это список папок и файлов.
Можно спрятать и их, но это уже лишняя заморочка
если по сути, то это можно решать следующим образом -
На NTFS делается папка с правом (для пользователя) просмотра каталога, созданием файлов (и папок, если надо), возможность записи в файл, но (!!!) без права чтения файла.
В этом случае пользователь легко создает и записывает данные в файл, но просмотреть файлы не может.
у меня вообще логи с логон скриптов пишутся таким образом
1. На сервере загарен ресурс с полным доступом для всех пользователей, \\server\logs (можешь \\server\logs$)
2. На уровне NTFS стоят все права, за исключением удаления файлов и каталогов и просмотра файлов.
3. В результате логонные скрипты при необходимости создают любые папки и файлы, записывают в них даннын, однако посмотреть логи никто из пользователей не может. Максимум, что он может увидеть, это список папок и файлов.
Можно спрятать и их, но это уже лишняя заморочка
Проблема как раз в том что эти файлы создаются программами с которыми приходится работать юзерам. И создаются не там где положено - например в %SystemRoot%! Ну не научились еще программировать и вот приходится бороться. Особенно неприятно когда мобильный юзер логинится в первый раз на другой машинке и идет куча ошибок доступа к диску или rutime окошки тысячами вываливаются на рабочий стол. И ведь не подойдут не скажут... пока раз двадцать не перезагузят систему. Ps:Возможности отказаться от этих программ пока нет.
SIAL
извиняюсь, не заметил твои пояснения по вопросу.
устроит ли тебя вариант, если задача будет запускаться просто под другим пользователем? Учетную запись другого пользователя можно поместить в power users или даже administrators на локальном компьютере.
Остается написать скрипт или небольшую программулину, которая будет через RUNAS запускать прогу под другим пользователем. И, само собой, необходимо ее зашифровать. чтобы простым просмотром нельзя было увидеть пароль этого пользователя.
PS. Задачи случайно не на фоксе/dbase?
Добавлено:
Можно ли как-то скриптами или через интерфейс сменить владельца у файла на произвольного пользователя (его пароль неизвестен, чтобы зайти под ним и take ownership)?
Стандартными способами нельзя. А нестандартными?
извиняюсь, не заметил твои пояснения по вопросу.
устроит ли тебя вариант, если задача будет запускаться просто под другим пользователем? Учетную запись другого пользователя можно поместить в power users или даже administrators на локальном компьютере.
Остается написать скрипт или небольшую программулину, которая будет через RUNAS запускать прогу под другим пользователем. И, само собой, необходимо ее зашифровать. чтобы простым просмотром нельзя было увидеть пароль этого пользователя.
PS. Задачи случайно не на фоксе/dbase?
Добавлено:
Можно ли как-то скриптами или через интерфейс сменить владельца у файла на произвольного пользователя (его пароль неизвестен, чтобы зайти под ним и take ownership)?
Стандартными способами нельзя. А нестандартными?
RunAs имеет свое окружение переменных и сл-но %Username% тоже свой.
Есть возможность в скрипте получить %Username% пользователя для которого и запускается LogOn?
Как понял, запускается LogOn, потом в скрипте идет вызов привелегий пользователя с дополнительными правами, от его имени и производятся манипуляции с файлами??
Есть возможность в скрипте получить %Username% пользователя для которого и запускается LogOn?
Как понял, запускается LogOn, потом в скрипте идет вызов привелегий пользователя с дополнительными правами, от его имени и производятся манипуляции с файлами??
через runas запускается прога под другим аккаунтом, естественно и %Username% тоже другой
> запускается LogOn, потом в скрипте идет вызов привелегий пользователя
> с дополнительными правами, от его имени и производятся манипуляции с файлами??
логон не требуется, runas сразу запускает прогу под другим аккаунтом. При этом используется и профайл и окружение другого пользоаптеля.
> Есть возможность в скрипте получить %Username%
> пользователя для которого и запускается LogOn?
в командную строку для запуска через runas можно передать как параметр и %Username% текущего пользователя. Либо, если таких пользователей не очень много, то можно для каждого сделать дублирующую учетною запись, скажем, ivanov2, которая будет иметь все права ivanov+power user
Для решения проблем с запуском старых програм есть несколько решений
1. Доработка программ. Иногда это не такой сложный путь, как это кажеться вначале.
2. Работа пользователя под локальным администратором или power user
3. Прописывание конкретных прав, которые требуются для работы с программой в реестре и NTFS. Т.е. если проге требуется полный доступ в ветку HKLM\Software\SuperFirma\Prog, то эта ветка открывается для полного доступа конкретному пользователю или группе. Если прога требует полный доступ в SystemDrive, то он устанавливается. Это все хоть и снижает безопасность, но все же не так, как в варианте 2.
4. Запуск программы под другой учетной записью.
5. отказ от данной программы
> запускается LogOn, потом в скрипте идет вызов привелегий пользователя
> с дополнительными правами, от его имени и производятся манипуляции с файлами??
логон не требуется, runas сразу запускает прогу под другим аккаунтом. При этом используется и профайл и окружение другого пользоаптеля.
> Есть возможность в скрипте получить %Username%
> пользователя для которого и запускается LogOn?
в командную строку для запуска через runas можно передать как параметр и %Username% текущего пользователя. Либо, если таких пользователей не очень много, то можно для каждого сделать дублирующую учетною запись, скажем, ivanov2, которая будет иметь все права ivanov+power user
Для решения проблем с запуском старых програм есть несколько решений
1. Доработка программ. Иногда это не такой сложный путь, как это кажеться вначале.
2. Работа пользователя под локальным администратором или power user
3. Прописывание конкретных прав, которые требуются для работы с программой в реестре и NTFS. Т.е. если проге требуется полный доступ в ветку HKLM\Software\SuperFirma\Prog, то эта ветка открывается для полного доступа конкретному пользователю или группе. Если прога требует полный доступ в SystemDrive, то он устанавливается. Это все хоть и снижает безопасность, но все же не так, как в варианте 2.
4. Запуск программы под другой учетной записью.
5. отказ от данной программы
AlexSSS
Добавлю ...
6. Многие проги могут использовать TEMP директорию
В ХР имеет смысл создать в корне эту папку дать полные права ВСЕМ на неё
ну и конечно подправить переменные TMP и TEMP
Добавлю ...
6. Многие проги могут использовать TEMP директорию
В ХР имеет смысл создать в корне эту папку дать полные права ВСЕМ на неё
ну и конечно подправить переменные TMP и TEMP
Отвечаю на собственный вопрос
> Можно ли как-то сменить владельца
> у файла на произвольного пользователя
это позволяет сделать утилита Subinacl.exe из Resource Kit
запущенная под доменадмином она позволяет сменить владельца на любого другого
> Можно ли как-то сменить владельца
> у файла на произвольного пользователя
это позволяет сделать утилита Subinacl.exe из Resource Kit
запущенная под доменадмином она позволяет сменить владельца на любого другого
Как скриптом максимально быстро проверить, доступен ли компьютер?
обращение к зашаренному ресурсу недоступного компьютера приводит к достаточно длительному подвисанию скрипта. Хочется найти вариант, когда недоступность компа определяется максимально быстро
обращение к зашаренному ресурсу недоступного компьютера приводит к достаточно длительному подвисанию скрипта. Хочется найти вариант, когда недоступность компа определяется максимально быстро
AlexSSS
Цитата:
пинг вызвать из Exec
Цитата:
Как скриптом максимально быстро проверить, доступен ли компьютер?
обращение к зашаренному ресурсу недоступного компьютера приводит к достаточно длительному подвисанию скрипта. Хочется найти вариант, когда недоступность компа определяется максимально быстро
пинг вызвать из Exec
AlexSSS
Здесь обсуждалось
http://forum.ru-board.com/topic.cgi?forum=8&topic=1908&start=240#10
и в шапке тоже
Здесь обсуждалось
http://forum.ru-board.com/topic.cgi?forum=8&topic=1908&start=240#10
и в шапке тоже
>Как скриптом максимально быстро проверить, доступен ли компьютер?
ответ взят из TechNet Script Center
machine = "compname"
Set objPing = GetObject("winmgmts:{impersonationLevel=impersonate}")._
ExecQuery("select * from Win32_PingStatus where address = '"_
& machine & "'")
For Each objStatus in objPing
If IsNull(objStatus.StatusCode) or objStatus.StatusCode<>0 Then
WScript.Echo("machine " & machine & " is not reachable")
End If
Next
ответ взят из TechNet Script Center
machine = "compname"
Set objPing = GetObject("winmgmts:{impersonationLevel=impersonate}")._
ExecQuery("select * from Win32_PingStatus where address = '"_
& machine & "'")
For Each objStatus in objPing
If IsNull(objStatus.StatusCode) or objStatus.StatusCode<>0 Then
WScript.Echo("machine " & machine & " is not reachable")
End If
Next
igor_andreev
Цитата:
Подскажи - где можно почитать о вснех параметрах типа %~nx1 и %~z1. Как в них разобраться ?
Цитата:
@echo off
echo Size of %~nx1 is %~z1
pause
Подскажи - где можно почитать о вснех параметрах типа %~nx1 и %~z1. Как в них разобраться ?
AlexSSS
Цитата:
попробуй так:
Код:
function alive(strComputer)
{
try
{
var refLocator = new ActiveXObject("WbemScripting.SWbemLocator");
var refService = refLocator.ConnectServer(strComputer, "root\\default");
return (true);
}
catch(e)
{
return (false);
}
}
Цитата:
Как скриптом максимально быстро проверить, доступен ли компьютер?
попробуй так:
Код:
function alive(strComputer)
{
try
{
var refLocator = new ActiveXObject("WbemScripting.SWbemLocator");
var refService = refLocator.ConnectServer(strComputer, "root\\default");
return (true);
}
catch(e)
{
return (false);
}
}
GaDiNa
Цитата:
Да тут в интернете и можно.
http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/percent.mspx
http://www.windowsitpro.com/Article/ArticleID/13443/13443.html
А если сделаешь у себя на рабочем столе ярлык:
%windir%\hh.exe ms-its:%windir%\Help\ntcmds.chm::/ntcmds.htm
то в описании команды for найдешь тоже самое по русски
Ну или просто в командной строке набери: for /?
Цитата:
Подскажи - где можно почитать о вснех параметрах типа %~nx1
Да тут в интернете и можно.
http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/percent.mspx
http://www.windowsitpro.com/Article/ArticleID/13443/13443.html
А если сделаешь у себя на рабочем столе ярлык:
%windir%\hh.exe ms-its:%windir%\Help\ntcmds.chm::/ntcmds.htm
то в описании команды for найдешь тоже самое по русски
Ну или просто в командной строке набери: for /?
GaDiNa
Цитата:
В файловом архиве в разделе "операционные системы" есть переделанный из стандартного русский хэлп (с более удобной навигацией). Правда, несколько кривовато скомпиленный
Цитата:
Подскажи - где можно почитать о вснех параметрах типа %~nx1 и %~z1. Как в них разобраться ?
В файловом архиве в разделе "операционные системы" есть переделанный из стандартного русский хэлп (с более удобной навигацией). Правда, несколько кривовато скомпиленный
> например создаем новую учетку в АД, и хотелось бы, чтобы для нового юзера при
> входе в домен все и создавалось, т.е. как мы уже обсуждали - 3 папки (личная, группы, конторы), причем не просто на файл-сервере, но и у юзера тоже они сразу
> подключались....
Мне ответили........
Да, это возможно при помощи логонных скриптов. Более того, можно написать скрипты так, чтобы на какой компьютер пользователь не сел, после входа в систему у него подключались все его ресурсы.
Единственное, что мне не удалось нормально организовать, это чтобы автоматом при этом настроились учетные записи для почты (используются Outlook Express и Outlook без Exchange)
Так вот вопрос....по скриптам....как писать.....точнее просто не знаю тольком вообще ничего про скрипты
> входе в домен все и создавалось, т.е. как мы уже обсуждали - 3 папки (личная, группы, конторы), причем не просто на файл-сервере, но и у юзера тоже они сразу
> подключались....
Мне ответили........
Да, это возможно при помощи логонных скриптов. Более того, можно написать скрипты так, чтобы на какой компьютер пользователь не сел, после входа в систему у него подключались все его ресурсы.
Единственное, что мне не удалось нормально организовать, это чтобы автоматом при этом настроились учетные записи для почты (используются Outlook Express и Outlook без Exchange)
Так вот вопрос....по скриптам....как писать.....точнее просто не знаю тольком вообще ничего про скрипты
Подскажите пжлс, кто знает, как проще всего в VB скрипте проверить пользователя на обладание привилегий администратора? Т.е. есть имя юзера - с правами админа он или нет?
Alxdhere
Просто ....
Проверка на содержимое группы Administrators
Просто ....
Проверка на содержимое группы Administrators
> точнее просто не знаю тольком вообще ничего про скрипты
н-да...
Скрипт - это такая программа, которая выполняет какие-то действия ;o)
Логон скрипт - скрипт, который выполняется сразу после идентификации пользователя и входе его в виндовс. В домене очень легко повесить логон скрипт на каждого пользователя через "Active Directory Users and Computers" ("Domain Users and Computers" в NT4 домене). D В этом случае скрипт сработает и на win95 клиентах.
Либо можно повесить логон скрипты через политики. Но тогда клиенты должны быть не ниже win2000.
расмматриваем первый вариант.
Active Directory Users and Computers-->выбираешь конкретного пользователя, напр. себя-->properties-->profile-->logon script
Пишешь туда имя скрипта, напр. LOGON.BAT
Самый простой пример - надо конкретному пользователю при входе в систему подключить зашаренный ресурс. Делаешь файл LOGON.BAT и в него засовываешь пару строк
net use x: /delete
net use x: \\server\resource
На домен контроллере смотришь, какая папка зашарена как Netlogon и забрасываешь туда logon.bat
Если репликация в домене идет нормально, то скоро этот файл появится на всех домен контроллерах.
Теперь, как только пользователь зарегистрируется в домене, у него запустится этот батник и соответственно присоединится диск X.
Это самый простейший пример. даже с помощью BAT файлов можно произвести достаточно много настроек. Более развитые скриптовые языки могут сделать еще больше. Из часто используемых -VBScript, JScript, KIX Script. Кто-то на форуме вообще предлагал писать скрипты на C.
Если хочешь быстро начать писать реально работающие скрипты, я бы посоветовал Kix Script.
н-да...
Скрипт - это такая программа, которая выполняет какие-то действия ;o)
Логон скрипт - скрипт, который выполняется сразу после идентификации пользователя и входе его в виндовс. В домене очень легко повесить логон скрипт на каждого пользователя через "Active Directory Users and Computers" ("Domain Users and Computers" в NT4 домене). D В этом случае скрипт сработает и на win95 клиентах.
Либо можно повесить логон скрипты через политики. Но тогда клиенты должны быть не ниже win2000.
расмматриваем первый вариант.
Active Directory Users and Computers-->выбираешь конкретного пользователя, напр. себя-->properties-->profile-->logon script
Пишешь туда имя скрипта, напр. LOGON.BAT
Самый простой пример - надо конкретному пользователю при входе в систему подключить зашаренный ресурс. Делаешь файл LOGON.BAT и в него засовываешь пару строк
net use x: /delete
net use x: \\server\resource
На домен контроллере смотришь, какая папка зашарена как Netlogon и забрасываешь туда logon.bat
Если репликация в домене идет нормально, то скоро этот файл появится на всех домен контроллерах.
Теперь, как только пользователь зарегистрируется в домене, у него запустится этот батник и соответственно присоединится диск X.
Это самый простейший пример. даже с помощью BAT файлов можно произвести достаточно много настроек. Более развитые скриптовые языки могут сделать еще больше. Из часто используемых -VBScript, JScript, KIX Script. Кто-то на форуме вообще предлагал писать скрипты на C.
Если хочешь быстро начать писать реально работающие скрипты, я бы посоветовал Kix Script.
vworld
Цитата:
В шапочке все есть .... (и даже больше )
Потрать пару часов (даже меньше ) что бы вникнуть, а вот потом .....
Окроются врата админовского рая для тебя .....
Я имею в виду что СКРИПТЫ тебе НАСТОЛЬКО облегчат работу,
что сам себе завидовать будешь...
AlexSSS
Цитата:
Kibkalo это был .... Парень сам начинал с WSH, затем уровень повысился
и перешел на С, чего и всем желает я думаю.
Цитата:
точнее просто не знаю тольком вообще ничего про скрипты
В шапочке все есть .... (и даже больше )
Потрать пару часов (даже меньше ) что бы вникнуть, а вот потом .....
Окроются врата админовского рая для тебя .....
Я имею в виду что СКРИПТЫ тебе НАСТОЛЬКО облегчат работу,
что сам себе завидовать будешь...
AlexSSS
Цитата:
Кто-то на форуме вообще предлагал писать скрипты на C.
Kibkalo это был .... Парень сам начинал с WSH, затем уровень повысился
и перешел на С, чего и всем желает я думаю.
> Окроются врата админовского рая для тебя
Для открытия админовского рая лично мне не хватает решения одной задачи ;o)
В 2000-м домене пара сотен пользователей используют для почты Outlook. Версии, начиная от 97-го до 2003-го. Можно ли с помощью скриптов настраивать хотя бы учетные записи для Оутлука, чтобы пользователь получал доступ к своей учетной записи с любого компа?
использовать Exchange только для почты экономически нецелесообразно
использование перемещаемых профилей не подходит из-за большой разницы в софте на разных компьютерах.
Для открытия админовского рая лично мне не хватает решения одной задачи ;o)
В 2000-м домене пара сотен пользователей используют для почты Outlook. Версии, начиная от 97-го до 2003-го. Можно ли с помощью скриптов настраивать хотя бы учетные записи для Оутлука, чтобы пользователь получал доступ к своей учетной записи с любого компа?
использовать Exchange только для почты экономически нецелесообразно
использование перемещаемых профилей не подходит из-за большой разницы в софте на разных компьютерах.
Jovanotti
AlexSSS
просто земной поклон вам, за советы....вот это дельные ответы я называю, когда первую инфу для дальнейшего изучения человек получает от знающих людей, в придачу ссылку на мануалы, ну а дальше в свободное плаванье (пока не утонет)
Кстати Kibkalo в виндовых вещах именно в плане админство не превзайденный гуру
(заочно ему тоже спасибо)
З.Ы. сорри если наоффтопил.....
AlexSSS
просто земной поклон вам, за советы....вот это дельные ответы я называю, когда первую инфу для дальнейшего изучения человек получает от знающих людей, в придачу ссылку на мануалы, ну а дальше в свободное плаванье (пока не утонет)
Кстати Kibkalo в виндовых вещах именно в плане админство не превзайденный гуру
(заочно ему тоже спасибо)
З.Ы. сорри если наоффтопил.....
Цитата:
Alxdhere
Просто ....
Проверка на содержимое группы Administrators
Я так и делаю, однако если зайти не под локальным админом, а под доменным, то его в группе нет! Там есть только группа Domain Admin
Я предполагаю, что должно быть какое-то аккуратное решение для определения привелегий пользователя без перебора их в группах (локальных и доменных). Типа bool IsAdmin(UserName). Но где ее искать?
Проверяешь, есть ли пользователь в группе локальных админов и группах, которые входят в группу локальных админов. Использую рекурсию можно проверить любой уровень вложенности.
Можно чуть упростить задачу - просто проверять группы локальных админов и домен
админов, если другие группы в фирме не входят в группу локальных админов.
Можно поискать, какие конкретно права доступны только для админов, напр. запись в конкретные ветки реестра. И просто проверять, можно ли писать в эту ветку или нет. Если получилось - значит админ. И не забыть стереть записанное
Хотя, может быть, есть все же и более красивое решения на VBS.
На KIX все такие проблемы решаются с полпинка
просто членство в группе - InGroup("group")
а для конкретно твоего вопроса - @priv (User's privilege level (GUEST, USER, ADMIN))
Можно чуть упростить задачу - просто проверять группы локальных админов и домен
админов, если другие группы в фирме не входят в группу локальных админов.
Можно поискать, какие конкретно права доступны только для админов, напр. запись в конкретные ветки реестра. И просто проверять, можно ли писать в эту ветку или нет. Если получилось - значит админ. И не забыть стереть записанное
Хотя, может быть, есть все же и более красивое решения на VBS.
На KIX все такие проблемы решаются с полпинка
просто членство в группе - InGroup("group")
а для конкретно твоего вопроса - @priv (User's privilege level (GUEST, USER, ADMIN))
2 AlexSSS
Проверил группы админов локальных и доменных. Мне достаточно. Спасибо за помощь.
Проверил группы админов локальных и доменных. Мне достаточно. Спасибо за помощь.
Вот надумал создать вот такой батник
net use f: \\UNC Path (типа папка отдела)
net use g: \\UNC Path (типа папка конторы)
Это в продолжение мой проблемы
теперь вопрос....нормально написал?
И еще один....как подзаменить у юзера папку Мои документы, так чтобы он и не знал об этом, в смысле папка мои документы хранилась на сервере, ну или просто синхронизировалась с папку локальной?
net use f: \\UNC Path (типа папка отдела)
net use g: \\UNC Path (типа папка конторы)
Это в продолжение мой проблемы
теперь вопрос....нормально написал?
И еще один....как подзаменить у юзера папку Мои документы, так чтобы он и не знал об этом, в смысле папка мои документы хранилась на сервере, ну или просто синхронизировалась с папку локальной?
Вообще-то по хорошему пишут сначала
net use f: /delete
а потом уже
net use f: \\Path
Это на тот случай, если диск F: уже замаплен на какой-то сетевой путь. Тогда вторая команда выдаст ошибку и не сработает.
А насчет папки "Мои документы" проще всего через групповые политики. "Конфигурация пользователя\Перенаправление папки". Хорошо еще включить "Конфигурация пользователя\Административные шаблоны\Рабочий стол\Запретить пользователям менять путь папки "Мои документы". Это все если есть домен.
Если домена нет, то через реестр HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\Personal
net use f: /delete
а потом уже
net use f: \\Path
Это на тот случай, если диск F: уже замаплен на какой-то сетевой путь. Тогда вторая команда выдаст ошибку и не сработает.
А насчет папки "Мои документы" проще всего через групповые политики. "Конфигурация пользователя\Перенаправление папки". Хорошо еще включить "Конфигурация пользователя\Административные шаблоны\Рабочий стол\Запретить пользователям менять путь папки "Мои документы". Это все если есть домен.
Если домена нет, то через реестр HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\Personal
Option Explicit
'Смена пароля с регистрацией факта смены в MSSQL-Server
Const DomainName = "DOMAIN"
Const SQLServerName = "SQL2k"
Const SQLDBName = "AD"
Const UserId = "Vasja"
Const UserPassword = "password"
Const LocalUser = "Administrator"
Const LocalAdminPassword = "password"
Dim WshNetwork
Dim ComputerName
Dim ConnectToSQL
'возвращает True, если пароль менялся ранее
Function IsChangePassword()
Set ConnectToSQL = CreateObject("ADODB.Connection")
ConnectToSQL.Open "Provider=SQLOLEDB.1;" & _
"Password=" & UserPassword & ";" & _
"Persist Security Info=True;" & _
"User ID=" & UserId & ";" & _
"Initial Catalog=" & SQLDBName & ";" & _
"Data Source=" & SQLServerName
Dim cmd
Set cmd = CreateObject("ADODB.Command")
cmd.CommandText = "ChangePassword"
cmd.CommandType = 4 'adCmdStoredProc
Set cmd.ActiveConnection = ConnectToSQL
Dim prm
'adVarChar=200, adParamInput=1
Set prm = cmd.CreateParameter("@computer", 200, 1, 20)
cmd.Parameters.Append prm
prm.Value = ComputerName
'adBoolean=11, adParamOutput=2
Set prm = cmd.CreateParameter("@exists", 11, 2)
cmd.Parameters.Append prm
cmd.Execute
IsChangePassword = prm.Value
End Function
'Изменяет пароль первого пользователя в первой локальной группе
'(локальный администратор)
Sub ChangePassword()
Dim comp, grp, usr, objArgs
Set comp = Nothing
Set comp = GetObject("WinNT://" & ComputerName & ",computer")
comp.Filter = Array("Group")
Set usr = Nothing
For Each grp In comp
Exit For
Next
For Each usr In grp.Members
Exit For
Next
Set objArgs = WScript.Arguments
If objArgs.Count = 0 Then
usr.SetPassword LocalAdminPassword
Else
usr.SetPassword objArgs(0)
End If
usr.SetInfo
End Sub
'точка начала выполнения сценария
Set WshNetwork = CreateObject("WScript.Network")
ComputerName = WshNetwork.ComputerName
On Error Resume Next
If IsChangePassword = False Then ChangePassword
If Err.Number <> 0 Then
Dim cmd
Set cmd = CreateObject("ADODB.Command")
With cmd
Set .ActiveConnection = ConnectToSQL
.CommandText = "INSERT INTO ErrTraccer (ComputerName, ErrNumber, Description) " & _
"VALUES ('" & ComputerName & "'," & Err.Number & ",'" & Err.Description & "')"
.Execute
End With
End IF
'Смена пароля с регистрацией факта смены в MSSQL-Server
Const DomainName = "DOMAIN"
Const SQLServerName = "SQL2k"
Const SQLDBName = "AD"
Const UserId = "Vasja"
Const UserPassword = "password"
Const LocalUser = "Administrator"
Const LocalAdminPassword = "password"
Dim WshNetwork
Dim ComputerName
Dim ConnectToSQL
'возвращает True, если пароль менялся ранее
Function IsChangePassword()
Set ConnectToSQL = CreateObject("ADODB.Connection")
ConnectToSQL.Open "Provider=SQLOLEDB.1;" & _
"Password=" & UserPassword & ";" & _
"Persist Security Info=True;" & _
"User ID=" & UserId & ";" & _
"Initial Catalog=" & SQLDBName & ";" & _
"Data Source=" & SQLServerName
Dim cmd
Set cmd = CreateObject("ADODB.Command")
cmd.CommandText = "ChangePassword"
cmd.CommandType = 4 'adCmdStoredProc
Set cmd.ActiveConnection = ConnectToSQL
Dim prm
'adVarChar=200, adParamInput=1
Set prm = cmd.CreateParameter("@computer", 200, 1, 20)
cmd.Parameters.Append prm
prm.Value = ComputerName
'adBoolean=11, adParamOutput=2
Set prm = cmd.CreateParameter("@exists", 11, 2)
cmd.Parameters.Append prm
cmd.Execute
IsChangePassword = prm.Value
End Function
'Изменяет пароль первого пользователя в первой локальной группе
'(локальный администратор)
Sub ChangePassword()
Dim comp, grp, usr, objArgs
Set comp = Nothing
Set comp = GetObject("WinNT://" & ComputerName & ",computer")
comp.Filter = Array("Group")
Set usr = Nothing
For Each grp In comp
Exit For
Next
For Each usr In grp.Members
Exit For
Next
Set objArgs = WScript.Arguments
If objArgs.Count = 0 Then
usr.SetPassword LocalAdminPassword
Else
usr.SetPassword objArgs(0)
End If
usr.SetInfo
End Sub
'точка начала выполнения сценария
Set WshNetwork = CreateObject("WScript.Network")
ComputerName = WshNetwork.ComputerName
On Error Resume Next
If IsChangePassword = False Then ChangePassword
If Err.Number <> 0 Then
Dim cmd
Set cmd = CreateObject("ADODB.Command")
With cmd
Set .ActiveConnection = ConnectToSQL
.CommandText = "INSERT INTO ErrTraccer (ComputerName, ErrNumber, Description) " & _
"VALUES ('" & ComputerName & "'," & Err.Number & ",'" & Err.Description & "')"
.Execute
End With
End IF
Есть сервер Windows 2000 Adv Server, есть клиенты Windows 2000 Prof, всё это в рабочей группе, как организовать смену паролей так, чтоб не пришлось бегать к каждой клиентской тачке и менять локальный пароль.
В общем нужен скрипт меняющий пароли локальных пользователей.
В общем нужен скрипт меняющий пароли локальных пользователей.
Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
Предыдущая тема: Зеркалирование дисков Win2000
Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.