Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Авторизация winnt в своей программе / 15 сообщений из 15, страница 1 из 1
26.03.2006, 15:15:23
    #33625739
tvm
tvm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Авторизация winnt в своей программе
Многоуважаемый ALL! не подскажете как раелизовать winnt авторизацию в своей программе. т.е. нужно сделать так чтобы при входе в программу осуществлялась проверка пользователя. Ну или хотя бы подскажите в какую стророну копать.
...
Рейтинг: 0 / 0
26.03.2006, 16:17:58
    #33625788
bac
bac
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Авторизация winnt в своей программе
Вот это возвращает имя пользователя, который вошел в систему. Авторизация уже проведена операционной системой. Работает начиная от Win95.

Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long


Dim sBuffer As String
Dim lSize As Long
sBuffer = Space$(255)
lSize = Len(sBuffer)
Call GetUserName(sBuffer, lSize)
sBuffer = LTrim(RTrim(sBuffer))
lSize = Len(sBuffer)
...
Рейтинг: 0 / 0
26.03.2006, 19:32:20
    #33625932
tvm
tvm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Авторизация winnt в своей программе
это я знаю. прjблема в том что пользователь может войти на рабочую станцию а не в домен а на локальной машине он может и не быть админом
...
Рейтинг: 0 / 0
26.03.2006, 20:26:15
    #33625958
bac
bac
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Авторизация winnt в своей программе
Ну это не проблема. Под NT,2000,XP можно запретить заход не в домен!
...
Рейтинг: 0 / 0
26.03.2006, 20:28:44
    #33625960
bac
bac
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Авторизация winnt в своей программе
Если попользоваться программой poledit то и под 9x можно запретить заход без авторизации в домене.
Не понял зачем нужны права админа?
...
Рейтинг: 0 / 0
26.03.2006, 22:00:31
    #33626016
tvm
tvm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Авторизация winnt в своей программе
авторНу это не проблема. Под NT,2000,XP можно запретить заход не в домен!
можно! ... но при сетке в 180-200 компов ...
авторНе понял зачем нужны права админа?
теоретически доступ к проге могут получить даже юзеры, что конечно же не желательно. вот я для подстраховки и хочу сделать проверку дополнительную
...
Рейтинг: 0 / 0
26.03.2006, 22:52:54
    #33626052
bac
bac
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Авторизация winnt в своей программе
НУ если компов немеряно, то сам бог велел контроллер домена поставить :) Э-Эх админ спит.
...
Рейтинг: 0 / 0
27.03.2006, 11:09:12
    #33626561
tvm
tvm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Авторизация winnt в своей программе
Да не сплю я. :) Помимо админства я же и главный одинэсник. А по этой части спрос гораздо больше.
...
Рейтинг: 0 / 0
27.03.2006, 12:15:21
    #33626786
DDE
DDE
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Авторизация winnt в своей программе
tvmМногоуважаемый ALL! не подскажете как раелизовать winnt авторизацию в своей программе. т.е. нужно сделать так чтобы при входе в программу осуществлялась проверка пользователя. Ну или хотя бы подскажите в какую стророну копать.
LogonUser?
...
Рейтинг: 0 / 0
27.03.2006, 13:30:36
    #33626994
tvm
tvm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Авторизация winnt в своей программе
DDE
LogonUser?
Не понял. можно поподробнее?
...
Рейтинг: 0 / 0
27.03.2006, 14:05:39
    #33627108
buser
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Авторизация winnt в своей программе
AllAPI.net
Пример от туда....
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
'This project needs a timer
Private Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long
Private Declare Function GetTempPath Lib "kernel32" Alias "GetTempPathA" (ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long
Private Declare Function IsIconic Lib "user32" (ByVal hwnd As Long) As Long
Private Sub Form_Load()
    'KPD-Team 1998
    'URL: http://www.allapi.net/
    'E-Mail: KPDTeam@Allapi.net
    Timer1.Interval =  100 
    Timer1.Enabled = True
    Dim strTemp As String, strUserName As String
    'Create a buffer
    strTemp = String( 100 , Chr$( 0 ))
    'Get the temporary path
    GetTempPath  100 , strTemp
    'strip the rest of the buffer
    strTemp = Left$(strTemp, InStr(strTemp, Chr$( 0 )) -  1 )

    'Create a buffer
    strUserName = String( 100 , Chr$( 0 ))
    'Get the username
    GetUserName strUserName,  100 
    'strip the rest of the buffer
    strUserName = Left$(strUserName, InStr(strUserName, Chr$( 0 )) -  1 )

    'Show the temppath and the username
    MsgBox "Hello " + strUserName + Chr$( 13 ) + "The temp. path is " + strTemp
End Sub
Private Sub Timer1_Timer()
    Dim Boo As Boolean
    'Check if this form is minimized
    Boo = IsIconic(Me.hwnd)
    'Update the form's caption
    Me.Caption = "Form minimized: " + Str$(Boo)
End Sub

...
Рейтинг: 0 / 0
27.03.2006, 22:33:30
    #33628366
tvm
tvm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Авторизация winnt в своей программе
Может я не много непонятно изъяснился. Программу можно запускать под любым пользователем. После запуска в ней запросить имя юзера и пароль, которые необходимо проверить в домене на принадлежность в группе скажем администраторы домена. Если проверка не проходит то пошел на фиг с новым годом :)
...
Рейтинг: 0 / 0
27.03.2006, 22:36:33
    #33628367
tvm
tvm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Авторизация winnt в своей программе
ну и ествественно что проверять нужно не только имя пользователя но и пароль.
...
Рейтинг: 0 / 0
28.03.2006, 09:25:50
    #33628692
buser
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Авторизация winnt в своей программе
Можно оттолкнуться от этого...
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
' Win32 API declarations
Declare Function LogonUser Lib "advapi32.dll" Alias "LogonUserA" (Byval lpszUsername As String, Byval lpszDomain As String, _
Byval lpszPassword As String, Byval dwLogonType As Long, Byval dwLogonProvider As Long, phToken As Long) As Long
Declare Function ImpersonateLoggedOnUser Lib "advapi32.dll" Alias "ImpersonateLoggedOnUser" (Byval hToken As Long) As Long
Declare Function RevertToSelf Lib "advapi32.dll" Alias "RevertToSelf" () As Long
Declare Function CloseHandle Lib "kernel32.dll" Alias "CloseHandle" (Byval hObject As Long) As Long
Declare Function GetLastError Lib "kernel32.dll" Alias "GetLastError" () As Long
Declare Function FormatMessage Lib "kernel32.dll" Alias "FormatMessageA" (Byval dwFlags As Long, lpSource As Any, _
Byval dwMessageId As Long, Byval dwLanguageId As Long, Byval lpBuffer As String, Byval nSize As Long, Byval Arguments As Long) As Long

Const LOGON32_PROVIDER_DEFAULT =  0 
Const LOGON32_LOGON_INTERACTIVE =  2 
Const FORMAT_MESSAGE_FROM_SYSTEM = &H1000

Sub Initialize
     Dim hToken&
     Dim username$, password$, domain$, xml$
     Dim file%

     ' --- set the values required for login
     username$ = "pmartinez "
     password$ = "redsox"
     domain$ = "BOSOX"

     ' --- login user and get handle to token for the specified user
     If LogonUser(username$, domain$, password$, LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT, hToken&) =  0  Then
          Msgbox FormatErrorMsg
          Exit Sub
     End If

     ' --- impersonate the security context of the logged-on user in the current thread
     If ImpersonateLoggedOnUser(hToken&) =  0  Then
          Msgbox FormatErrorMsg
          If hToken& <>  0  Then CloseHandle(hToken&)
          Exit Sub
     End If

     ' --- close the handle to the token
     If hToken& <>  0  Then CloseHandle(hToken&)

     ' --- open a file on another NT machine, and read it into a string variable
     file% = Freefile
     Open "\\FENWAY\C$\test.xml" For Input As file%
     xml$ = Input(Lof(file%), file%)
     Close file%

     ' --- revert back to system account
     Call RevertToSelf()

     ' --- print the contents of the file to the browser
     Print "Content-type: text/xml"
     Print xml$

End Sub

Function FormatErrorMsg() As String
     Dim msg$
     Dim er&

     ' --- get last error code from calling thread (note: will not return error code in a scheduled agent)
     er& = GetLastError()

     ' --- prepare buffer to receive error message
     msg$ = String$( 256 , Chr( 0 ))

     ' --- format the message
     FormatMessage FORMAT_MESSAGE_FROM_SYSTEM,  0 , er&,  0 , msg$, Lenb(msg$) -  1 ,  0 

     ' --- return the error message
     FormatErrorMsg = Left$(msg$, Instr( 1 , msg$, Chr( 0 )) -  1 )

End Function

...
Рейтинг: 0 / 0
28.03.2006, 11:21:41
    #33628962
tvm
tvm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Авторизация winnt в своей программе
ага я тож как раз нашел про LogonUser. Буду пробовать. Всем спасибо
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Авторизация winnt в своей программе / 15 сообщений из 15, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]