Ответы на вопросы индийского коллеги

В последнее время так получилось, что периодически отвечаю на всякого рода вопросы типа HowTo. Иногда вопросы очень тривиальные, иногда нет. Думаю, что даже самые простые вопросы будут интересны, раз они были интересны моим коллегам. Так получилось, что больше всего таких вопросов приходит из Индии.

Итак, вопрос 1.

Q:   А как узнать под каким пользователем запущен сервис AOS в DAX 4?

A: Создаем нижеследующий метод в классе WinAPIServer, затем вызываем его.

#define.retvalSize(255)

public server static str getServiceUserName ()

{

    DLLFunction         _getUserNameW ;

    Binary              bSize   = new Binary(#SizeOfInt);

    Binary              bStr    = new Binary(#retvalSize*2); // room for retvalSize TCHARs

    DLL                _DLL;

    InteropPermission   interopPerm;

 

    // get dll interop permission

    interopPerm = new InteropPermission(InteropKind::DllInterop);

    interopPerm.assert();

 

    bSize.dWord(#Offset0,#retvalSize);

 

    _DLL          = new DLL(#ADVAPI32DLL);

    _getUserNameW = new DLLFunction(_DLL, 'GetUserNameW');

    _getUserNameW .returns(ExtTypes::DWord);

    _getUserNameW .arg(ExtTypes::Pointer,

                           ExtTypes::Pointer);

 

    if (_getUserNameW .call(bStr,bSize))

    {

        return bStr.wString(#Offset0);

    }

 

    return '';

}