Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 1 |

 

  Вопрос: CreateProcessWithLogonW и RasDial() Добавлено: 19.10.05 21:41  

Автор вопроса:  student-uni
Условие задачи таково:

У пользователя нет прав для использования удалённого соединения,
моя прога которую он использует - должна установить удалённое соединение,
не зависимо от того имеет пользователь права или нет.

Решение 1:
Для запуска консольного приложения RasDial.exe подходит API функция CreateProcessWithLogonW.

Вопрос:
А что делать, если вместо RasDial.exe я хочу использовать API функцию RasDial() ?
/CreateProcessWithLogonW функции не ест, ему приложение и командную строку подавай/
Как запустить эту функцию с увеличенными правами ?
Читаю про LogonUser и Impersonate - пока ничего не получается,
Логон Юзер даёт ошибку 8
LogonUser("логин", ".", "пароль", 1,1, pLong)

Спасибо всем

Ответить

  Ответы Всего ответов: 1  

Номер ответа: 1
Автор ответа:
 student-uni



Вопросов: 122
Ответов: 257
 Профиль | | #1 Добавлено: 19.10.05 23:37
Если никто не отвечает, начну сам.

В МСДНЕ пишется,
что особенность использования ЛогонЮзер состоит
в том, что нужно чтобы был установлен параметр
SE_TCB_NAME
А проверить или он установлен можно с помощью
OpenProcessToken получения привелегий.

Вот короткий пример получения привелегий

Public Sub AdjustToken()

Const TOKEN_ADJUST_PRIVILEGES = &H20
Const TOKEN_QUERY = &H8
Const SE_PRIVILEGE_ENABLED = &H2

Dim hdlProcessHandle As Long
Dim hdlTokenHandle As Long
Dim tmpLuid As LUID
Dim tkp As TOKEN_PRIVILEGES
Dim tkpNewButIgnored As TOKEN_PRIVILEGES
Dim lBufferNeeded As Long

SetLastError 0

hdlProcessHandle = GetCurrentProcess()

If GetLastError <> 0 Then
    'MsgBox "GetCurrentProcess error==" & GetLastError
End If

OpenProcessToken hdlProcessHandle, (TOKEN_ADJUST_PRIVILEGES Or TOKEN_QUERY), hdlTokenHandle

If GetLastError <> 0 Then
    'MsgBox "OpenProcessToken error==" & GetLastError
End If

LookupPrivilegeValue "", "SeShutdownPrivilege", tmpLuid

If GetLastError <> 0 Then
    'MsgBox "LookupPrivilegeValue error==" & GetLastError
End If

tkp.PrivilegeCount = 1
tkp.TheLuid = tmpLuid
tkp.Attributes = SE_PRIVILEGE_ENABLED

AdjustTokenPrivileges hdlTokenHandle, False, tkp, Len(tkpNewButIgnored), tkpNewButIgnored, lBufferNeeded
                           
If GetLastError <> 0 Then
    'MsgBox "AdjustTokenPrivileges error==" & GetLastError
End If

End Sub


непонятно как

tkp.Attributes = SE_PRIVILEGE_ENABLED

увязать с ЛогонЮзер ?

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам