Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.11.13;
Скачать: [xml.tar.bz2];

Вниз

Нужно чтобы сервис запускал exe под именем пользователя   Найти похожие ветки 

 
dream   (2003-10-29 15:35) [0]

под которым сейчас загружена windows ,а он гад запускает под system :(
как исправить ? сервис инсталируеться под администраторм , по сути он должен запускать exe с правам администратора ?

или подскажите пример как запустить exe с правами выбраного пользователя ( логин и пароль знаю )


 
Юрий Зотов   (2003-10-29 15:38) [1]

CreateProcessAsUser


 
Kashey   (2003-10-29 15:39) [2]

Вставлять его в авторан :)


 
dream   (2003-10-29 15:41) [3]

> Kashey

Кого вставлять в авторан ? сервис ? :)


 
dream   (2003-10-29 15:42) [4]

> Юрий Зотов

Нашёл пример только на С++ :( а на delphi пример есть ?


 
Kashey   (2003-10-29 15:49) [5]

Если хочешь чтобы "сервис" запускался от имени пользователя- самый простой способ сделать его не сервисом а програмой с автораном.

или очень нужен локальный\удаленый конрол работы службы?

Если нашол пример на С++, но не знаешь как он должен быть на дельфях - притарань пример сюда, переведу


 
Игорь Шевченко   (2003-10-29 16:07) [6]


> или подскажите пример как запустить exe с правами выбраного
> пользователя ( логин и пароль знаю )


CreateProcessWithLogonW

unit main;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TfMain = class(TForm)
Button: TButton;
procedure ButtonClick(Sender: TObject);
end;

var
fMain: TfMain;

implementation
uses
HSAdvApi;

{$R *.dfm}

procedure TfMain.ButtonClick(Sender: TObject);
begin
MyCreateProcess();
end;

procedure TfMain.MyCreateProcess;
const
UserName : WideString = "TESTUSER";
Password : WideString = "testuser";
ConstCommandLine : String = "CMD.EXE";
Title : WideString = "Test process";
Domain : WideString = "WORKGROUP";
var
MyStartupInfo : STARTUPINFO;
ProcessInfo : PROCESS_INFORMATION;
CommandLine : array[0..512] of WideChar;
begin
FillChar(MyStartupInfo, SizeOf(MyStartupInfo), 0);
MyStartupInfo.cb := SizeOf(MyStartupInfo);
StringToWideChar(ConstCommandLine, CommandLine,
Sizeof(CommandLine) div SizeOf(WideChar));
MyStartupInfo.lpTitle := PWideChar(Title);
if not CreateProcessWithLogonW (PWideChar(UserName), PWideChar(Domain),
PWideChar(Password), LOGON_WITH_PROFILE, nil,
CommandLine, 0, nil, nil, @MyStartupInfo, @ProcessInfo) then
RaiseLastWin32Error()
else begin
CloseHandle(ProcessInfo.hProcess);
CloseHandle(ProcessInfo.hThread);
end;
end;

end.


unit HSAdvApi;

interface
uses
Windows;

function CreateProcessWithLogonW (const lpUsername : PWideChar;
const lpDomain : PWideChar; const lpPassword : PWideChar;
dwLogonFlags : DWORD; const lpApplicationName : PWideChar;
lpCommandLine : PWideChar; dwCreationFlags : DWORD;
lpEnvironment : Pointer; const lpCurrentDirectory : PWideChar;
lpStartupInfo : PStartupInfo;
lpProcessInfo : PProcessInformation) : Boolean; stdcall;

const
LOGON_WITH_PROFILE = $00000001;
LOGON_NETCREDENTIALS_ONLY = $00000002;
LOGON_ZERO_PASSWORD_BUFFER = $80000000;

implementation
uses
SysUtils;

{ ADVAPI32.DLL functions }
type
TCreateProcessWithLogonW =
function (const lpUsername : PWideChar;
const lpDomain : PWideChar; const lpPassword : PWideChar;
dwLogonFlags : DWORD; const lpApplicationName : PWideChar;
lpCommandLine : PWideChar; dwCreationFlags : DWORD;
lpEnvironment : Pointer; const lpCurrentDirectory : PWideChar;
lpStartupInfo : PStartupInfo;
lpProcessInfo : PProcessInformation) : Boolean; stdcall;

const
DllName = "advapi32.dll";

var
DllHandle : THandle;
_CreateProcessWithLogonW : TCreateProcessWithLogonW;

function InitLib : Boolean;
begin
if DllHandle = 0 then
if Win32Platform = VER_PLATFORM_WIN32_NT then begin
DllHandle := LoadLibrary(DllName);
if DllHandle <> 0 then begin
@_CreateProcessWithLogonW := GetProcAddress(DllHandle,
"CreateProcessWithLogonW");
end;
end;
Result := (DllHandle <> 0);
end;

function NotImplementedBool : Boolean;
begin
SetLastError (ERROR_CALL_NOT_IMPLEMENTED);
Result := false;
end;

function CreateProcessWithLogonW (const lpUsername : PWideChar;
const lpDomain : PWideChar; const lpPassword : PWideChar;
dwLogonFlags : DWORD; const lpApplicationName : PWideChar;
lpCommandLine : PWideChar; dwCreationFlags : DWORD;
lpEnvironment : Pointer; const lpCurrentDirectory : PWideChar;
lpStartupInfo : PStartupInfo;
lpProcessInfo : PProcessInformation) : Boolean; stdcall;
begin
if InitLib and Assigned(_CreateProcessWithLogonW) then
Result := _CreateProcessWithLogonW(lpUsername, lpDomain, lpPassword,
dwLogonFlags, lpApplicationName, lpCommandLine, dwCreationFlags,
lpEnvironment, lpCurrentDirectory, lpStartupInfo, lpProcessInfo)
else
Result := NotImplementedBool;
end;

initialization
finalization
if DllHandle <> 0 then
FreeLibrary(DllHandle);
end.


 
zapped   (2003-10-29 16:24) [7]

лезешь в Панель управления - Администрирование - Службы - находишь свою службу, лезешь в её свойства, закладка ВХОД В СИСТЕМУ, там выбираешь С ИМЕНЕМ ПОЛЬЗОВАТЕЛЯ, указываешь известные тебе логин, пасворд и подтверждение оного ;))


 
zapped   (2003-10-29 16:29) [8]

in addintion 2 [7]
прощу прощения, я малость невнимательно прочёл вопрос... но предлагаемый способ, думаю поможет, ибо тогда сервис будет запускаться с правами известного пользователя, а следственно и все процессы, которые обычно запускает :)))



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2003.11.13;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.034 c
14-41979
Alex_S
2003-10-17 19:33
2003.11.13
Какой размер буфера в виндосе??7


3-41069
Alexus
2003-10-21 19:14
2003.11.13
Подскажите с какой стороны взяться...


7-42184
Seldon
2003-09-04 17:23
2003.11.13
Alt+tab


1-41554
Ev1972
2003-10-27 16:39
2003.11.13
Как распарсить html страничку в Delphi?


3-40876
Layner
2003-10-21 09:36
2003.11.13
Подскажите, как а DBGrid считать опред. ячейку?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский