Что за ф-ция "LsaAddAccountRights" и по чему она не работает?

Тема в разделе "WASM.WIN32", создана пользователем ABC, 22 авг 2005.

  1. ABC

    ABC New Member

    Публикаций:
    0
    Регистрация:
    22 авг 2005
    Сообщения:
    92
    Вот скопировал с исходника DirectIOAccess и все что нужно

    но! Что этот весь комплект делает и почему она не чего

    не делает? Пробывал в порты писать а не хочет :dntknw:




    Код (Text):
    1.  
    2. BOOL
    3.   AddAccountRight(
    4.     PCWSTR  pwszPrivilegeName
    5.     )
    6. {
    7.  
    8.     PSID_AND_ATTRIBUTES     psa = 0;
    9.     LSA_HANDLE              hPolicy;
    10.     LSA_UNICODE_STRING      usPrivilegeName;
    11.     LSA_OBJECT_ATTRIBUTES   oa;
    12.     HANDLE                  hToken;
    13.     ULONG                   cbNeeded;
    14.     ULONG                   cch;
    15.     BOOL                    bOK = FALSE;
    16.     BOOL                    b;
    17.     SCESTATUS               status;
    18.  
    19.     ZeroMemory( &oa, sizeof(oa) );
    20.  
    21.     cch = wcslen( pwszPrivilegeName );
    22.  
    23.     if ( 0 != cch ) {
    24.  
    25.         usPrivilegeName.Length          = (USHORT) cch*sizeof(WCHAR);
    26.         usPrivilegeName.MaximumLength   = (USHORT) (cch*sizeof(WCHAR) + sizeof(UNICODE_NULL));
    27.         usPrivilegeName.Buffer          = (PWSTR) pwszPrivilegeName;
    28.  
    29.         status = LsaOpenPolicy(
    30.                             NULL,
    31.                             &oa,
    32.                             POLICY_CREATE_ACCOUNT | POLICY_LOOKUP_NAMES,
    33.                             &hPolicy );
    34.  
    35.         if ( SCESTATUS_SUCCESS == status ) {
    36.  
    37.             b = OpenProcessToken(
    38.                             GetCurrentProcess(),
    39.                             TOKEN_QUERY,
    40.                             &hToken );
    41.  
    42.             if ( b ) {
    43.  
    44.                 cbNeeded = 0;
    45.  
    46.                 GetTokenInformation(
    47.                                 hToken,
    48.                                 TokenUser,
    49.                                 psa,
    50.                                 0,
    51.                                 &cbNeeded );
    52.  
    53.                 if ( 0 != cbNeeded ) {
    54.  
    55.                     psa = (PSID_AND_ATTRIBUTES) malloc( cbNeeded );
    56.  
    57.                     if ( NULL != psa ) {
    58.  
    59.                         b = GetTokenInformation(
    60.                                             hToken,
    61.                                             TokenUser,
    62.                                             psa,
    63.                                             cbNeeded,
    64.                                             &cbNeeded);
    65.                    
    66.                         if ( SCESTATUS_SUCCESS == LsaAddAccountRights(
    67.                                                                 hPolicy,
    68.                                                                 psa->Sid,
    69.                                                                 &usPrivilegeName,
    70.                                                                 1) ) {
    71.                             bOK = TRUE;
    72.                         }
    73.  
    74.                         free( psa );
    75.                     }
    76.                 }
    77.  
    78.                 CloseHandle( hToken );
    79.             }
    80.                
    81.             LsaClose( hPolicy );
    82.         }
    83.     }
    84.  
    85.     return bOK;
    86. }
    87.  
    88.  
     
  2. TarasCo

    TarasCo New Member

    Публикаций:
    0
    Регистрация:
    2 фев 2005
    Сообщения:
    106
    Это функция разрешает укзанную привелегию для пользователя от имени которого запущен процесс. Чтобы все работала нужно разлогиниться и снова залогиниться ( или перезагрузить машину ) - только тогда вступит в силу новая политика. Для доступа к портам видимо, нужна была превелегия "SeTcbPrivilege" AKA "Act as operating system part". По умолчанию, она отключена для всех пользователей, в том числе и группы Администраторов. И вообщето ее включение - это понижение безопасности системы. Я бы посоветовал код, осуществляющий доступ к портам оформить в серсис и запустить его как LOCAL SYSTEM. IMHO тогда эта ф. вообще не понадобится
     
  3. ECk

    ECk Member

    Публикаций:
    0
    Регистрация:
    9 апр 2004
    Сообщения:
    454
    Адрес:
    Russia
    перегружался после применения прав?
     
  4. ABC

    ABC New Member

    Публикаций:
    0
    Регистрация:
    22 авг 2005
    Сообщения:
    92
    Да? А НА ASM кто не будь сможет перевести>?
     
  5. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    ABC

    Си'шный компилятор может.
     
  6. ABC

    ABC New Member

    Публикаций:
    0
    Регистрация:
    22 авг 2005
    Сообщения:
    92
    ZwSetInformationProcess не выполняется... ХР SP2 :dntknw: