|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » VBS/WSH/JS - [решено] Как проверить наличие прав администратора |
|
|
VBS/WSH/JS - [решено] Как проверить наличие прав администратора
|
Пользователь Сообщения: 59 |
Профиль | Отправить PM | Цитировать Как проверить наличие прав администратора в Windows без вывода окон для пользователя?
|
|
Отправлено: 19:17, 09-05-2012 |
Ветеран Сообщения: 5624
|
Профиль | Отправить PM | Цитировать Цитата:
|
|
------- Отправлено: 01:30, 10-05-2012 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать
Правда, не знаю, остался ли объект «CompatUI.Util.1» в новых ОС.
Во всяком случае, можно попробовать получить доступ к тем объектам, к которым он (доступ) разрешён только с административными привилегиями. И на основании результата делать вывод. |
Отправлено: 03:19, 10-05-2012 | #3 |
Ветеран Сообщения: 5624
|
Профиль | Отправить PM | Цитировать В семерке, похоже, уже нет:
Цитата:
|
|
------- Отправлено: 03:43, 10-05-2012 | #4 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата Delirium:
А ежели так попробовать: Option Explicit Dim objSWbemLocator Dim objSWbemServicesEx Dim objSWbemObjectEx Set objSWbemLocator = WScript.CreateObject("WbemScripting.SWbemLocator") Set objSWbemServicesEx = objSWbemLocator.ConnectServer(".", "root\cimv2") With WScript.CreateObject("WScript.Network") Set objSWbemObjectEx = objSWbemServicesEx.Get( _ "Win32_NetworkLoginProfile.Name='" & _ .UserDomain & "\" & .UserName & "'") End With With objSWbemObjectEx Select Case .Privileges Case 0 WScript.Echo .Name & " is Guest" Case 1 WScript.Echo .Name & " is User" Case 2 WScript.Echo .Name & " is Administrator" Case Else ' Impossible End Select End With Set objSWbemServicesEx = Nothing Set objSWbemLocator = Nothing WScript.Quit 0 Win32_NetworkLoginProfile class NetUserGetInfo function USER_INFO_4 structure — что-то похожее. Delirium, Вам WinAPI ближе — посмотрите по ссылкам, гоже ли?! Ну, и — не знаю, как будет себя вести на машине без сети. |
||
Отправлено: 05:26, 10-05-2012 | #5 |
Старожил Сообщения: 169
|
Профиль | Сайт | Отправить PM | Цитировать Я когда-то делал так
Set wshshl = CreateObject("Wscript.Shell") Пробовал создать ключ в разделе реестра wshshl.RegWrite (параметры) здесь HKEY_LOCAL_MACHINE\SOFTWARE\Наш_подраздел\ключ проверял наличие ключа wshshl.RegRead (параметры) Если ключ не создан, то нет прав на запись к HKEY_LOCAL_MACHINE, соотвественно не Админ. |
------- Отправлено: 13:58, 10-05-2012 | #6 |
Пользователь Сообщения: 59
|
Профиль | Отправить PM | Цитировать Цитата:
|
|
Отправлено: 20:05, 10-05-2012 | #7 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Dark_Timur, то, что работает — это-то было понятно. Вопрос в том, действительно ли сие есть именно то, что мы ожидаем. Потому мне хотелось бы, чтобы более опытные коллеги, работающие на уровень ниже, нежели скрипты, сопоставили приведённые мною выше ссылки и высказали своё мнение на этот счёт.
|
Отправлено: 21:27, 10-05-2012 | #8 |
Пользователь Сообщения: 59
|
Профиль | Отправить PM | Цитировать Подвожу итоги:
Спасибо большое! Оказалось, что всё гениальное - просто. Тему закрываю, так как она исчерпала себя. Ещё раз большое спасибо! |
Отправлено: 23:08, 10-05-2012 | #9 |
Пользователь Сообщения: 69
|
Профиль | Отправить PM | Цитировать Ну, создавать ветку рееста или создавать локальную учетку (как предлагают на других форумах), на мой взгляд, совершенно, "не кошерно". Надо, всего лишь, перебрать почленно группу "Администраторы" на локальном компе и сравнить её членов с залогиненным пользователем. К сожалению, я не программер, поэтому прошу не судить строго, если код не столь оптимален и не универсален, но, проанализировав материаллы по этим двум ссылкам:
List local administrators across a network domain, List User properties as displayed in ADUC, у меня получилось следующее: Option Explicit Dim strComp, objSysInfo, objLocalGroup, objUser, item On Error Resume Next strComp = "." Set objLocalGroup = GetObject("WinNT://" & strComp & "/Администраторы") Set objSysInfo = CreateObject("ADSystemInfo") Set objUser = GetObject("LDAP://" & objSysInfo.UserName) For Each item in objLocalGroup.Members if item.Name = objUser.sAMAccountName Then Wscript.Echo "User " _ & objUser.sAMAccountName & " have administrator rights!" Next WScript.Quit() |
Отправлено: 10:32, 17-12-2012 | #10 |
|
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - [решено] Как проверить в определённой директории наличие файлов (не подкаталогов!) ? | SANIOK_AV | Скриптовые языки администрирования Windows | 26 | 21-06-2011 12:25 | |
Debian/Ubuntu - Как принудительно проверить корневую систему на наличие ошибок? | Grey_rnd | Общий по Linux | 7 | 07-04-2011 06:48 | |
CMD/BAT - Как проверить наличие текста в файле | mamont1 | Скриптовые языки администрирования Windows | 6 | 16-09-2010 16:32 | |
Как проверить наличие процесса? | Не флужу | AutoIt | 0 | 13-01-2010 07:31 | |
Как проверить JavaScript'ом наличие Flash??? | Krendebobel | Вебмастеру | 10 | 28-06-2005 16:17 |
|