On-line: гостей 0. Всего: 0 [подробнее..]
АвторСообщение



Пост N: 31
Зарегистрирован: 02.10.08
ссылка на сообщение  Отправлено: 08.04.09 16:47. Заголовок: Выполнение проги от имени другого пользователя.


Доброго времени суток всем!
Надо было мне выполнить прогу от имени другого пользователя (админа) на компе, при том, что текущая учетка - юзера. Накропал такую штуку:

#include "FiveWin.ch"
function Main()
cccc("notepad.exe")
return nil

#PRAGMA BEGINDUMP
#include "Windows.h"
#include "ClipApi.h"

HB_FUNC( CCCC )
{
LPWSTR szMsg ;
HWND hWnd;
PROCESS_INFORMATION ProcInfo;
STARTUPINFOW StartInfo;
ZeroMemory(&StartInfo, sizeof(STARTUPINFOW));
StartInfo.cb = sizeof(STARTUPINFOW);
StartInfo.lpDesktop = 0;

szMsg = _parc( 1 ) ;
//MessageBox( GetActiveWindow(), szMsg, "" , 0x40 );

CreateProcessWithLogonW( L"admin", NIL, L"mypassword", LOGON_WITH_PROFILE, NULL, L"notepad.exe" , CREATE_DEFAULT_ERROR_MODE| CREATE_NEW_CONSOLE , NULL, NULL,
&StartInfo, &ProcInfo ) ;

_retni(1);
}
#PRAGMA ENDDUMP

Так-то все работает как часики... Но если поставить

CreateProcessWithLogonW( L"admin", NIL, L"mypassword", LOGON_WITH_PROFILE, NULL, szMsg , CREATE_DEFAULT_ERROR_MODE| CREATE_NEW_CONSOLE , NULL, NULL,
&StartInfo, &ProcInfo ) ;

то есть не вьявную указывать прогу или командную строку, а передавать параметром в C функцию, то ни фига не происходит... Уже устал крутить все это дело. Чуствую, что что-то с типами, но вроде и тип нужный у параметра, и MessageBox показывает "notepad.exe", т.е. параметр передается корректно... Засада какая-то короче... Может кто подскажет чего?


Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 10 [только новые]


постоянный участник


Пост N: 628
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 08.04.09 17:11. Заголовок: Попробуйте szMsg = h..


Попробуйте
szMsg = hb_mbtowc( hb_parc( 1 ) )


Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 32
Зарегистрирован: 02.10.08
ссылка на сообщение  Отправлено: 08.04.09 17:38. Заголовок: Грит: Unresolved ext..


Грит:
Unresolved external '_hb_mbtowc'
я нашел упоминание об етой функции только в "hbwince.h", сделал #include "hbwince.h", но все равно Unresolved external...



Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 630
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 08.04.09 17:49. Заголовок: wchar_t *hb_mbtowc(..



wchar_t *hb_mbtowc( const char *srcA )
{
DWORD length;
wchar_t *dstW;

length = MultiByteToWideChar( CP_ACP, 0, srcA, -1, NULL, 0 );
dstW = ( wchar_t * ) hb_xgrab( ( length + 1 ) * sizeof( wchar_t ) );
MultiByteToWideChar( CP_ACP, 0, srcA, -1, dstW, length + 1 );

return dstW;
}



Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 631
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 08.04.09 23:06. Заголовок: Loach пишет: но вро..


Loach пишет:

 цитата:
но вроде и тип нужный у параметра, и MessageBox показывает "notepad.exe", т.е. параметр передается корректно...



Не корректно передается ( попробуйте использовать MessageBoxW и сами увидите )


function Main()  
? cccc("notepad.exe")
return nil

#pragma BEGINDUMP
#define UNICODE
#define _WIN32_WINNT 0x0500

#include "windows.h"
#include "hbapi.h"

HB_FUNC( CCCC )
{
wchar_t * szMsg;
PROCESS_INFORMATION ProcInfo = {0};
STARTUPINFOW StartInfo = {0};

StartInfo.cb = sizeof(STARTUPINFOW);

szMsg = hb_mbtowc( (const char *) hb_parc(1) );
//MessageBox( GetActiveWindow(), szMsg, L"Info", 0x40 );

hb_retni( CreateProcessWithLogonW(L"adm0n", L".", L"password", 1, NULL, szMsg, CREATE_DEFAULT_ERROR_MODE|CREATE_NEW_CONSOLE, NULL, NULL, &StartInfo, &ProcInfo) );

hb_xfree( (void *) szMsg );
}

#pragma ENDDUMP


hb_mbtowc находится в hbcommon.lib

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 33
Зарегистрирован: 02.10.08
ссылка на сообщение  Отправлено: 09.04.09 09:04. Заголовок: Огромное спасибо, Пе..


Огромное спасибо, Петр!!!
Все заработало... Но только когда я вставил Ваш исходник hb_mbtowc в прогу...
Единственно что, у меня нет hbcommon.lib. Это что за библа? У меня xHarbour Compiler build 1.1.0 (SimpLex) (Rev. 6195)
, там в стандартной поставке только common.lib...

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 632
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 09.04.09 11:30. Заголовок: Подключайте тогда co..


Подключайте тогда common.lib, hbcommon.lib это для Harbour. В Harbour почти все стандартные библиотеки имеют префикс hb, за исключением rdd* и gt*..


Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 34
Зарегистрирован: 02.10.08
ссылка на сообщение  Отправлено: 09.04.09 12:24. Заголовок: Спасибо еще раз за о..


Спасибо еще раз за объяснения, но в xHb в common.lib mbtowc нету :(
Я нашел в BC 5.5 функцию mbtowc, но вот такая попытка:
mbtowc((wchar_t *)szMsg, (const char *)hb_parc( 1 ), 11 )
приводит только к szMsg = "n"... Опять я чего-то косячу :(


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 633
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 09.04.09 13:41. Заголовок: При чем здесь mbtowc..


При чем здесь mbtowc (ее, кстати, вызывать правильно нужно) - используйте hb_mbtowc(..).
Просто подключите common.lib и ничего не меняйте в моем примере.
Только не говорите, что ее нет
Loach пишет:

 цитата:
я нашел упоминание об етой функции только в "hbwince.h"



P.S. Я специально скачал xHb (1.2.01) и откомпилировал пример. Все прекрасно компилируется и работает.

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 35
Зарегистрирован: 02.10.08
ссылка на сообщение  Отправлено: 10.04.09 08:15. Заголовок: Да нет... Все есть....


Да нет... Все есть... И все работать будет, но видимо только на xHb (1.2.01). А у меня xHb (1.1.0). Там этой функции нет в common.lib
(Я эту библу по умолчанию к каждому проекту компилю) А перелезать на 1.2.01 как-то боязновато...
В любом случае спасибо большое!!!

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 634
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 10.04.09 16:23. Заголовок: Я не являюсь пользов..


Я не являюсь пользователем xHarbour и могу ошибаться, но
если вы посмотрите на xharbour.org то увидите анонсы версий 1.0.0 Beta и дальше 1.20.01. Без упоминания 1.1.0.
Т.е. разработчики более уверены в версии 1.20.01


Спасибо: 0 
ПрофильЦитата Ответить
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 5
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет