Category: Soft/Programming

  • Detect if the current user is logged as administrator

    From Vista and Windows 7 times a lot of operations are disabled for users without administrator privilegies.

    You may use the next code to test if logged user is in administrator group:

    function IsAdmin: Boolean; 
    const 
      DOMAIN_ALIAS_RID_ADMINS = $00000220; 
      SECURITY_NT_AUTHORITY: TSIDIdentifierAuthority = (Value: (0, 0, 0, 0, 0, 5)); 
      SECURITY_BUILTIN_DOMAIN_RID = $00000020; 
    var 
      hAccessToken: THandle; 
      ptgGroups: PTokenGroups; 
      dwInfoBufferSize: DWORD; 
      psidAdministrators: PSID; 
      x: Integer; 
      bSuccess: BOOL; 
    begin 
      Result := False; 
      bSuccess := OpenThreadToken(GetCurrentThread, TOKEN_QUERY, True, 
        hAccessToken); 
      if not bSuccess then 
      begin 
        if GetLastError = ERROR_NO_TOKEN then 
        bSuccess := OpenProcessToken(GetCurrentProcess, TOKEN_QUERY, 
                                      hAccessToken); 
      end; 
      if bSuccess then 
      begin 
        GetMem(ptgGroups, 1024); 
        bSuccess := GetTokenInformation(hAccessToken, TokenGroups, 
                                        ptgGroups, 1024, dwInfoBufferSize); 
        CloseHandle(hAccessToken); 
        if bSuccess then 
        begin 
          AllocateAndInitializeSid(SECURITY_NT_AUTHORITY, 2, 
            SECURITY_BUILTIN_DOMAIN_RID, DOMAIN_ALIAS_RID_ADMINS, 
            0, 0, 0, 0, 0, 0, psidAdministrators); 
          {$R-} 
          for x := 0 to ptgGroups.GroupCount - 1 do 
            if EqualSid(psidAdministrators, ptgGroups.Groups[x].Sid) then 
            begin 
              Result := True; 
              Break; 
            end; 
          {$R+} 
          FreeSid(psidAdministrators); 
        end; 
        FreeMem(ptgGroups); 
      end; 
    end;
  • Delphi XE2 в Киеве

    Вчера ходили на семинар Embarcadero, посвященный выходу RAD Studio XE2
    В основном все техническое вел Всеволод Леонов, а по лицензиям и стоимости говорил Кирилл Раннев (глава Embarcadero в СНГ)

    Основные нововведения в XE2:
    компилятор под 64 бита
    у меня часто спрашивают для ActiveX библиотек и extended procedure for MS SQL
    LiveBinding
    это круто, но пока неясен полный синтаксис самих выражений и какой парсер за это отвечает
    Кроме того, не очень понятно за счет какого нового RTTI у объектов это сделано.
    И конечно, в следующей версии явно нужно убирать ручные нотификации из кода про обновление связанных свойств-объектов. Это должно быть автоматом, как для dbware

    FireMonkey
    тут не однозначно. С одной стороны выглядит это все, как попса с мельканием, вращением и т.п. С другой стороны, обещанная кроссплатфоменность и однозначное “VCL не убирается, но развиваться будет только FireMonkey – новые проекты пишите только на нем”
    Для каких-то видов приложений FireMonkey будет явно плюсом – трехмерные CAD, планировка квартир, работа с картинками (эффекты, вращения и .п.)
    Но для бизнес приложений что-то я пока скептически настроен. Разве что некий dashboard можно на нем попробовать реализовать.
    В любом случае набор стандартных компонент FireMonkey пока куцый и можно попробовать туда “ворваться” и занять свою нишу

    многоплатформенность
    пока лично меня Macinotish не интересует. Может если добавят Android, то еще можно будет подумать. Пока даже нет идей, что из моего софта может пойти на этих платформах. Да и скорее всего там все сырое пока.

    DataSnap
    с каждым разом он все улчучшается и вроде даже заявлена генерация клиентских прокси-классов на c++, java, php etc из серверов-приложений (webservice). По идее стоит все-таки попробовать:-)

    – заявлен новый Delphi PHP XE2, но что-то я его не вижу в Partner Portal
    по крайней мере заказать лицензию на него не получается, а предыдущий Delphi PHP XE у меня работает странно

    PS: разыгрывали 4 футболки с надписью Embarcadero. Одна у меня:-)

    PPS: Всеволод Леонов тоже выложил в свой блог запись о Киеве и поместил туда фотку. на ней даже я замечен:

    Фото Всеволода Леонова

  • position tracker

    Если стоит задача отслеживать текущее положение коммуникатора на Windows Mobile, то есть два метода:
    1. GPS
    получать позицию из встроенного gps можно либо с помощью GPSID (идет в поставке с VS .NET 2008), или открываю порт COM1 и читая данные оттуда (pure binary data+парсить их)

    2. phone cell towers
    с помощью RIL драйвера получается CellID, который конвертируется в Latitude/Longitude либо с помощью открытых баз, либо через API к серверам (Yahoo, SonyEricson, Yandex…)

    Ссылки по теме:
    http://msdn.microsoft.com/en-us/library/dd938890.aspx
    http://dalelane.co.uk/blog/?p=241
    http://sourceforge.net/projects/opencellclient/

    Кстати показать потом карту с координатами легко:
    – Google Map:
    http://maps.google.ru/maps?q=55.882244,37.618561
    – Карты.Яндекс (сложнее):
    http://n.maps.yandex.ru/?ll=30.466768%2C50.429686&spn=0.03931%2C0.019929&z=15&l=wskl&oid=7383247

  • .net renewal

    Just now paid for next 3 years for scalabium.net domain

    I used the next coupon gdz637c and paid the $7.25 for every year. So saved more than $9 in total

  • ускорение brute force

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

    Нужно попробовать такое сделать для Paradox Password Recovery и DBISAM Password Recovery и сгенерировать для них такие таблицы предрасчитанных хешей

  • no unicode

    У меня база пользователей лежит не в уникодном виде. Всякие умляуты у немцев и шведов особых проблем не создают.

    Было пару заказов от греков, которые упорно вбили все свои данные на греческом. Особых проблем с “латинизацией” руками для этих заказов не было.

    А сегодня пришел заказ от китайца, которые тоже вбил все свои данные на китайском:-( Я-то перевел все это с помощью Google Translate, но в принципе нужно переводить и базу, и само приложение на уникод.

    Осложняется еще и тем, что все пользовательские тулзы (которые они покупают) тоже нужно переводить на уникод. И только ради того, чтобы они там увидели свое имя на родном языке. Ломает как-то, но рано или поздно придется этим заняться…

  • PayPro

    Оказывается они даже не проверяют заказы с оплатой через WebMoney:

    PayPro security reviewers are checking Credit Card, PayPal, Phone, Fax orders.
    Webmoney orders are verified by webmoney on their own side.

    Это из их ответа мне на явный fraud (the IP is from Canada but user is from Belarus, the user name is John Travolta with payment via WebMoney.)

    Это однозначно минус в их карму. Мне фиолетово каким способом проведена оплата, но заказ они должны валидировать в любом случае. Делать мне бьольше нечего, как вылавливать потом в сети свои продукты, выложенные “крякерами”-траволтами.

  • .com renewal

    I paid for next 3 years.
    Used the gdz372s as coupon in Godaddy (save 31%) and saved $8.65. So in result, the fee is $6.60 per year

  • hosting paid

    Just now I paid for next year for our Canadian server (59.50 CAD) via PayPal