Ответы на вопросы индийского коллеги
В последнее время так получилось, что периодически отвечаю на всякого рода вопросы типа 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 '';
}