Windows Script Host для Windows 2000/XP - Андрей Попов
Шрифт:
Интервал:
Закладка:
GroupObj.SetInfo();
/************* Конец *********************************************/
Вывод информации о пользователе и смена его пароля
В листинге 11.4 приведен сценарий UserInfo.js, в котором выводится на экран информация о созданном в сценарии AddUser.js пользователе XUser (рис. 11.2).
Р РёСЃ. 11.2. Рнформация Рѕ локальном пользователе XUser
Для получения этой информации мы производим связывание с нужным пользователем, т.е. создаем экземпляр UserObj объекта User и читаем данные из полей этого объекта:
//Связываемся с пользователем XUser компьютера 404_Popov
UserObj=GetObject("WinNT://404_Popov/XUser, user");
//Формируем строку с информацией о пользователе
SInfРѕ="Рнформация Рѕ пользователе XUser:n";
SInfРѕ+="РРјСЏ: "+UserObj.Name+"n";
SInfо+="Описание: "+UserObj.Description+"n";
//Выводим сформированную строку на экран
WScript.Echo(SInfo);
После этого в сценарии выдается запрос на изменение пароля пользователя XUser. Для этого мы используем метод Popup() объекта WshShell:
//Создаем объект WshShell
WshShell=WScript.CreateObject("WScript.Shell");
//Запрос на изменение пароля
Res=WshShell.Popup("Рзменить пароль Сѓ XUser?", 0,В "Администрирование пользователей", vbQuestion+vbYesNo);
В случае утвердительного ответа пароль изменяется с помощью метода SetPassword() объекта User, после чего все произведенные изменения сохраняются на рабочей станции с помощью метода SetInfo():
if (Res==vbYes) {
 //Нажата кнопка "Да"
 //Устанавливаем новый пароль
В UserObj.SetPassword("NewPassword");
 //Сохраняем сделанные изменения
В UserObj.SetInfРѕ();
 WScript.Echo("Пароль был изменен");
}
Листинг 11.4. Вывод информации о пользователе компьютера и смена его пароля/********************************************************************/
/* РРјСЏ: UserInfo.jsВ В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В */
/* Язык: JScript                                                   */
/* Описание: Вывод информации о пользователе компьютера и смена    */
/*          его пароля                                            */
/********************************************************************/
var
В UserObj,В В //Ркземпляр объекта User
 Res,      //Результат нажатия кнопки в диалоговом окне
 SPassword, //Строка с новым паролем
 SInfo;    //Строка для вывода на экран
//Рнициализируем константы для диалогового РѕРєРЅР°
var vbYesNo=4,vbQuestion=32,vbYes=6;
//Связываемся с пользователем XUser компьютера 404_Popov
UserObj=GetObject("WinNT://404_Popov/XUser,user");
//Формируем строку с информацией о пользователе
SInfo="Рнформация Рѕ пользователе XUser:n";
SInfo+="РРјСЏ: "+UserObj.Name+"n";
SInfo+="Описание: "+UserObj.Description+"n";
//Выводим сформированную строку на экран
WScript.Echo(SInfo);
//Создаем объект WshShell
WshShell=WScript.CreateObject("WScript.Shell");
//Запрос на изменение пароля
Res=WshShell.Popup("Рзменить пароль Сѓ XUser?", 0,
 "Администрирование пользователей", vbQuestion+vbYesNo);
if (Res==vbYes) { //Нажата кнопка Да
 //Устанавливаем новый пароль
В UserObj.SetPassword("NewPassword");
 //Сохраняем сделанные изменения
В UserObj.SetInfo();
 WScript.Echo("Пароль был изменен");
} else WScript.Echo("Вы отказались от изменения пароля");
/************* Конец *********************************************/
Удаление пользователя РёВ РіСЂСѓРїРїС‹ РЅР° рабочей станции В
Для удаления созданных с помощью сценариев AddUser.js и AddGroup.js пользователя XUser и группы XGroup мы создадим сценарий DelUserAndGroup.js, который представлен в листинге 11.5.
ЗамечаниеДля удаления пользователя или группы у вас в системе должны быть назначены права, которыми обладает администратор.
В принципе, удалить пользователя и группу так же просто, как и создать — нужно связаться с объектом Computer:
ComputerObj = GetObject("WinNT://404_Popov");
и вызвать метод Delete(), указав в качестве первого параметра класс объекта, который мы хотим удалить, и в качестве второго параметра — имя этого объекта:
//Удаляем пользователя
ComputerObj.Delete("user", UserStr);
Однако здесь могут возникнуть ошибки (например, мы не запускали предварительно сценарий AddUser.js и у нас на компьютере не зарегистрирован пользователь, которого мы хотим удалить). Поэтому в сценарии DelUserAndGroup.js предусмотрена обработка исключительных ситуаций с помощью конструкции try…catch:
IsError=false;
try {
 //Удаляем пользователя
В ComputerObj.Delete("user", UserStr);
} catch (e) { //Обрабатываем возможные ошибки
В if (e != 0) {
 //Выводим сообщение об ошибке
В IsError=true;
 Mess="Ошибка при удалении пользователя "+UserStr+"nКод ошибки: " + е.number+"nОписание: "+е.description;
  WshShell.Popup(Mess, 0, "Удаление пользователя", vbCritical);
В }
}
Как мы видим, если при вызове метода Delete() произойдет какая-либо ошибка, значение переменной IsError станет равным true, а на экран с помощью метода Popup() объекта WshShell выведется соответствующее сообщение (рис. 11.3).
Рис. 11.3. Сообщение, формируемое при попытке удаления несуществующего пользователя
Если же удаление прошло успешно (значение переменной IsError равно false), то на экран также выведется соответствующее диалоговое окно (рис. 11.4):