User или Админ?

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

User или Админ?

Сообщение jangle » 22.06.2010 (Вт) 10:31

Склероз одолел, забыл апишную функцию которая показывает тварь ли дрожащая текущий пользователь или право имеет :D Гугл какую-то ерунду выдает. Подскажите какая это функция, я точно помню что она есть.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: User или Админ?

Сообщение Хакер » 22.06.2010 (Вт) 11:26

jangle писал(а):или право имеет

На что?

См. http://msdn.microsoft.com/en-us/library ... 85%29.aspx .
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

hclubmk
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 240
Зарегистрирован: 19.06.2009 (Пт) 14:23
Откуда: От-туда

Re: User или Админ?

Сообщение hclubmk » 22.06.2010 (Вт) 11:36

Хакер писал(а):На что?

Исходя из заголовка треда: кого?
IsNTAdmin
Научились ли Вы радоваться трудностям?

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: User или Админ?

Сообщение Хакер » 22.06.2010 (Вт) 11:43

Исходя из заголовка треда: кого?

Права распространяются на действия, а действия — неодушевлённые, так что «на что».

IsNTAdmin

Нет такой WinAPI-функци.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Re: User или Админ?

Сообщение Antonariy » 22.06.2010 (Вт) 11:52

jangle писал(а):Гугл какую-то ерунду выдает.
Потому что ерунду спрашиваешь.
По-русски правильный запрос выглядит так: "проверить, входит ли пользователь в группу "администраторы".
Владеть терминологией — круто. :P
Лучший способ понять что-то самому — объяснить это другому.

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Re: User или Админ?

Сообщение jangle » 22.06.2010 (Вт) 11:59

Хакер писал(а):На что?

См. http://msdn.microsoft.com/en-us/library ... 85%29.aspx .


Право на установку софта

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Re: User или Админ?

Сообщение jangle » 22.06.2010 (Вт) 12:07

hclubmk писал(а):Исходя из заголовка треда: кого?
IsNTAdmin


Cпасибо hclubmk! :) Помучив Гугл твоим IsNTAdmin`ом все таки нашел искомую функцию.

Код: Выделить всё
Declare Function IsUserAdmin Lib "setupapi.dll" () As Long


P.S. Надо мне пить ноотропил :)

hclubmk
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 240
Зарегистрирован: 19.06.2009 (Пт) 14:23
Откуда: От-туда

Re: User или Админ?

Сообщение hclubmk » 22.06.2010 (Вт) 12:20

Хакер писал(а):Права распространяются на действия

Права предоставляются субъектам
Хакер писал(а):Нет такой WinAPI-функци.

Фантом
Научились ли Вы радоваться трудностям?

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Re: User или Админ?

Сообщение jangle » 22.06.2010 (Вт) 12:27

IsNTAdmin не работает в Висте. Поэтому ее нельзя использовать.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: User или Админ?

Сообщение Хакер » 22.06.2010 (Вт) 12:33

Права предоставляются субъектам

Да перечитай ты уже сначала и посмотри контекст.

Фантом

Кого волнуют недокументированные функции?

jangle
Тебе не судьба пройти по ссылке которую я дал и в писке функций найти CheckTokenMembership?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Re: User или Админ?

Сообщение jangle » 22.06.2010 (Вт) 12:47

Хакер писал(а):jangle
Тебе не судьба пройти по ссылке которую я дал и в писке функций найти CheckTokenMembership?


Выходит права пользователя можно выяснить разными путями. Мне это собственно нужно, чтобы запускать msi`айник из кода в фоновом режиме.

Инсталляция: msiexec /package c:\mysoft.msi /quiet /le+ install_log.txt
Деинсталляция: msiexec /uninstall {e0e75a67-0f6b-4c27-8071-1dd45e4778a2} /quiet /le+ uninstall_log.txt

Если права админа отсуствуют, программа должна ругнутся, что мол вы не имеете права на установку софта.

hclubmk
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 240
Зарегистрирован: 19.06.2009 (Пт) 14:23
Откуда: От-туда

Re: User или Админ?

Сообщение hclubmk » 22.06.2010 (Вт) 14:29

Хакер - так?
Код: Выделить всё
Private Type SID_IDENTIFIER_AUTHORITY
  Value(6) As Byte
End Type

Private Declare Function CheckTokenMembership Lib "advapi32.dll" _
  (ByVal pTokenHandle As Long, ByVal pSidToCheck As Long, ByRef bIsMember As Boolean) As Long

Private Declare Function AllocateAndInitializeSid Lib "advapi32.dll" _
  (pIdentifierAuthority As SID_IDENTIFIER_AUTHORITY, _
   ByVal nSubAuthorityCount As Byte, _
   ByVal nSubAuthority0 As Long, _
   ByVal nSubAuthority1 As Long, _
   ByVal nSubAuthority2 As Long, _
   ByVal nSubAuthority3 As Long, _
   ByVal nSubAuthority4 As Long, _
   ByVal nSubAuthority5 As Long, _
   ByVal nSubAuthority6 As Long, _
   ByVal nSubAuthority7 As Long, _
   lpPSid As Long) As Long

Private Declare Sub FreeSid Lib "advapi32.dll" (pSid As Any)

Public Function IsUserAnAdmin() As Boolean
 
  On Error Resume Next
 
  Dim IsAdmin As Boolean
  Dim NtAuthority As SID_IDENTIFIER_AUTHORITY
  NtAuthority.Value(5) = &H5
   
  Dim pSidAdministratorsGroup As Long
  IsAdmin = AllocateAndInitializeSid(NtAuthority, 2, &H20&, &H220&, 0, 0, 0, 0, 0, 0, pSidAdministratorsGroup)
  If IsAdmin Then
    Dim Result As Long
    Result = CheckTokenMembership(0, pSidAdministratorsGroup, IsAdmin)
    If Result = 0 Then IsAdmin = False
    FreeSid pSidAdministratorsGroup
  End If
 
  IsUserAnAdmin = IsAdmin

End Function
Научились ли Вы радоваться трудностям?


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot и гости: 104

    TopList