Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Вопрос по winapi функция CreateProcessWithLogonW / 6 сообщений из 6, страница 1 из 1
23.08.2020, 13:00
    #39991744
Vik153521
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по winapi функция CreateProcessWithLogonW
Здравствуйте.
Пытаюсь запустить приложение от имени другого пользователя
Код: pascal
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.
program Logon2;

{$APPTYPE CONSOLE}

{$R *.res}

uses
  System.SysUtils,
  Winapi.Windows;

var
UserN : PChar;
password : PChar;
si : TStartupInfo;
pi : TProcessInformation;
function  CreateProcessWithLogonW(
   lpUsername: LPCWSTR;                 // имя пользователя
   lpDomain : PChar;                   // домен пользователя
   lpPassword : LPCWSTR;                 // пароль пользователя
   dwLogonFlags : DWORD;                 // опция входа в сеть
   lpApplicationName : LPCWSTR;          // имя исполняемого модуля
   lpCommandLine : LPCWSTR;              // командная строка
   dwCreationFlagsv : DWORD;               // флажки создания
   lpEnvironment: Pointer;               // блок новой конфигурации
   lpCurrentDirectory: LPCWSTR;         // имя текущей папки
   lpStartupInfo : PStartupInfo;       // информация предустановки
   lpProcessInfo : PPROCESSINFORMATION // информация о процессе
):Boolean; stdcall; external advapi32;


begin
  try
    { TODO -oUser -cConsole Main : Insert code here }
         UserN:= Pchar('Test');
         password:= Pchar('test');
         ZeroMemory(@si,SizeOf(si));
         si.cb:= SizeOf(si);
         si.lpDesktop:=PChar('winsta0\\Defailt');
         si.dwFlags:= STARTF_USESHOWWINDOW;
         si.wShowWindow:= SW_SHOW;
         ZeroMemory(@Pi,SizeOf(pi));
          if CreateProcessWithLogonW(
            UserN,
            PChar('WORKGROUP'),
            password,
            1,
            PChar('C:\Windows\SysWOW64\calc.exe'),
            nil,
            0,
            nil,
            nil,
            @si,
            @pi
          ) then Writeln('Приложение запущено!') else
          Writeln(IntToStr(GetLastError)+': '+SysErrorMessage(GetLastError));
        CloseHandle(pi.hProcess);
        CloseHandle(pi.hThread);
  except
  on E: Exception do
    Writeln(E.ClassName, ': ', E.Message);
  end;
  Readln;
end.


Получаю следующую ошибку(См. вложение).
Система WIN 10
Подскажите пожалуйста в чем может быть проблема?
...
Рейтинг: 0 / 0
23.08.2020, 17:52
    #39991773
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по winapi функция CreateProcessWithLogonW
Vik153521Подскажите пожалуйста в чем может быть проблема?

Ну, например, я ни за что не поверю, что твой Windows Domain называется "WORKGROUP".

А вообще 0xc0000142 это ошибка загрузки какой-то библиотеки, обычно возникает из-за
несовпадения разрядностей. ProcessMonitor в руки и тщательно изучать что и откуда пытается
загружаться.

PS: В диалоговых окнах, включая сообщения об ошибках, работает Ctrl-C. Не стоит изображать
блондинку со скриншотами.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
23.08.2020, 18:33
    #39991785
d7i
d7i
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по winapi функция CreateProcessWithLogonW
si.lpDesktop:=PChar('winsta0\\Defailt');


Это правильно?
...
Рейтинг: 0 / 0
23.08.2020, 18:43
    #39991787
Vik153521
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по winapi функция CreateProcessWithLogonW
d7i,

Нет это опечатка, но ее исправление к сожалению не решает проблему.
...
Рейтинг: 0 / 0
23.08.2020, 20:20
    #39991812
d7i
d7i
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по winapi функция CreateProcessWithLogonW
Vik153521, не знаю как в Windows10 (наверное 64 бит?), но в 32-битном API используются 2 функции:
LogonUser и CreateProcessAsUser. Читайте внимательно MSDN, там всё есть...
...
Рейтинг: 0 / 0
24.08.2020, 00:34
    #39991851
DarkMaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по winapi функция CreateProcessWithLogonW
Vik153521,

Смотри JCL. Moдуль jclMiscel. Функция CreateProcessAsUserEx(). Зачем изобретать велосипеды?
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Вопрос по winapi функция CreateProcessWithLogonW / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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