Страница: 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 Автор ответа: 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 |
Поиск по форуму