[Q] GINA Startup & Style
От: Darkman_VLT Россия  
Дата: 11.01.06 03:42
Оценка:
Всех, с праздниками (слава Бога закончились).

Вторую неделю гуглю и ни как не могу решить проблему следующего плана:
Custom GINA загружается в Win2k (old style).

Как заставить её быть в XP-Style?

Были проделаны следующие действия, без результатно:

1. Прицепляли разные манифесты, с разными Resource ID (1 — для PE, 2 — якобы для DLL, и ещё кучу других) — не помогает
MSDN: commctls cookbook
2. Пытались вызывать разного рода API функи, описаные в MSDN'e — не помогает.
3. Пытались компилить это под разными версиями VC — не помагает
4. Документ MSDN'a Windows XP Visual Styles Are Not Active with Custom GINA for Nonadministrator Account — не туда, но пробывал.

Помогите заставить GINA быть в XP Style.
За основу была взята Custom GINA из MSDN Magazine
Security Briefs: Customizing GINA, Part 1 -- MSDN Magazine, May 2005
Security Briefs: Customizing GINA, Part 2 -- MSDN Magazine, June 2005

Буду рад любой помощи в данном вопросе.
Re: [Q] GINA Startup & Style
От: Alex Fedotov США  
Дата: 12.01.06 04:22
Оценка:
Здравствуйте, Darkman_VLT, Вы писали:

D_V>Всех, с праздниками (слава Бога закончились).


D_V>Вторую неделю гуглю и ни как не могу решить проблему следующего плана:

D_V>Custom GINA загружается в Win2k (old style).

D_V>Как заставить её быть в XP-Style?


D_V>Были проделаны следующие действия, без результатно:


D_V>4. Документ MSDN'a Windows XP Visual Styles Are Not Active with Custom GINA for Nonadministrator Account — не туда, но пробывал.


Вот это правильный ответ.
-- Alex Fedotov
Re[2]: [Q] GINA Startup & Style
От: Darkman_VLT Россия  
Дата: 16.01.06 06:48
Оценка:
Здравствуйте, Alex Fedotov, Вы писали:
D_V>>4. Документ MSDN'a Windows XP Visual Styles Are Not Active with Custom GINA for Nonadministrator Account — не туда, но пробывал.

AF>Вот это правильный ответ.


Алексей, я не совсем понял что есть правильный ответ?

А необходимо вызывать InitCommonControls()? Если Да, то где именно?


Кстати, гуглом нащёл вариацию функи для #define ISOLATION_AWARE_ENABLED
в MSDN вообще ни слова: void WINAPI IsolationAwareInitCommonControls(void);
пробовал её вызывать — не помогает.

Подскажите, чё я не так делаю?


Код:
BOOL Gina::Initialize(HANDLE hWlx, PVOID pWinlogonFunctions, Gina** ppNewGina) {
        HINSTANCE hDll;
    
        pThemeWait  fThemeWait;
        pThemeWatch fThemeWatch;

                //В логах DLLка пишет LOADED
        if(!(hDll = LoadLibraryA("shsvcs.dll")))
            {
            #ifdef _DEBUG
            LDB(L"shsvcs.dll NOT LOADED");
            #endif;
            fThemeWait = NULL;
            fThemeWatch = NULL;
            }
        else
            {
            #ifdef _DEBUG
            LDB(L"shsvcs.dll LOADED");
            #endif;
            fThemeWait = (pThemeWait) GetProcAddress(hDll, "ThemeWaitForServiceReady");
            fThemeWatch = (pThemeWatch) GetProcAddress(hDll,"ThemeWatchForStart");
            }
        
        if(fThemeWait && fThemeWatch)
            {
            fThemeWait(2000);
            fThemeWatch();
            fThemeWait = NULL;
            fThemeWatch = NULL;
            }
        
        CloseHandle(hDll);
Re[3]: [Q] GINA Startup & Style
От: GU Glez  
Дата: 16.01.06 10:31
Оценка:
Здравствуйте, Darkman_VLT, Вы писали:

D_V>Здравствуйте, Alex Fedotov, Вы писали:

D_V>>>4. Документ MSDN'a Windows XP Visual Styles Are Not Active with Custom GINA for <b>Nonadministrator Account</b> — не туда, но пробывал.
AF>>Вот это правильный ответ.
Выделенное и есть правильный ответ. Если мы оба правильно поняли
С уважением,
GU Glez [Джи Ю Глиз]
Re[3]: [Q] GINA Startup & Style
От: BerAn  
Дата: 16.01.06 11:00
Оценка:
Здравствуйте, Darkman_VLT, Вы писали:

D_V> fThemeWait = (pThemeWait) GetProcAddress(hDll, "ThemeWaitForServiceReady");

D_V> fThemeWatch = (pThemeWatch) GetProcAddress(hDll,"ThemeWatchForStart");

fThemeWatch = (pThemeWatch) GetProcAddress(hDll, (LPCSTR)1 );
fThemeWait = (pThemeWait) GetProcAddress(hDll, (LPCSTR)2 );
Re[4]: [Q] GINA Startup & Style
От: Darkman_VLT Россия  
Дата: 16.01.06 13:11
Оценка:
Здравствуйте, BerAn, Вы писали:

BA>Здравствуйте, Darkman_VLT, Вы писали:


D_V>> fThemeWait = (pThemeWait) GetProcAddress(hDll, "ThemeWaitForServiceReady");

D_V>> fThemeWatch = (pThemeWatch) GetProcAddress(hDll,"ThemeWatchForStart");

BA>fThemeWatch = (pThemeWatch) GetProcAddress(hDll, (LPCSTR)1 );

BA>fThemeWait = (pThemeWait) GetProcAddress(hDll, (LPCSTR)2 );

T.e я всё верно сделал, вот только нужно их вызывать не так, как в доке а по номерам?
1,2 ?

И необходимо ли присутствие манифеста?
Если да, то с RES.ID = 2?
И нужно ли вызывать InitCommonControls();?
Re[5]: [Q] GINA Startup & Style
От: BerAn  
Дата: 16.01.06 13:25
Оценка:
Здравствуйте, Darkman_VLT, Вы писали:

BA>>Здравствуйте, Darkman_VLT, Вы писали:


BA>>fThemeWatch = (pThemeWatch) GetProcAddress(hDll, (LPCSTR)1 );

BA>>fThemeWait = (pThemeWait) GetProcAddress(hDll, (LPCSTR)2 );

D_V>T.e я всё верно сделал, вот только нужно их вызывать не так, как в доке а по номерам?

D_V>1,2 ?

Именно по номерам, как указано в доке:
To work around this issue, invoke in sequence the following unnamed exports of Shsvcs.dll (a Windows XP system component) from the GINA entry point, WlxInitialize, before you start the user interface (UI) or impersonate the logged-on client:

D_V>И необходимо ли присутствие манифеста?

D_V>Если да, то с RES.ID = 2?
D_V>И нужно ли вызывать InitCommonControls();?

Нет. Достаточно "подождать"
Re[5]: [Q] GINA Startup & Style - вопрос закрыт
От: Darkman_VLT Россия  
Дата: 16.01.06 13:25
Оценка:
Здравствуйте, Darkman_VLT, Вы писали:

D_V>Здравствуйте, BerAn, Вы писали:


BA>>Здравствуйте, Darkman_VLT, Вы писали:


D_V>>> fThemeWait = (pThemeWait) GetProcAddress(hDll, "ThemeWaitForServiceReady");

D_V>>> fThemeWatch = (pThemeWatch) GetProcAddress(hDll,"ThemeWatchForStart");

BA>>fThemeWatch = (pThemeWatch) GetProcAddress(hDll, (LPCSTR)1 );

BA>>fThemeWait = (pThemeWait) GetProcAddress(hDll, (LPCSTR)2 );

D_V>T.e я всё верно сделал, вот только нужно их вызывать не так, как в доке а по номерам?

D_V>1,2 ?

D_V>И необходимо ли присутствие манифеста?

D_V>Если да, то с RES.ID = 2?
D_V>И нужно ли вызывать InitCommonControls();?


fThemeWatch = (pThemeWatch) GetProcAddress(hDll, (LPCSTR)1 );
fThemeWait = (pThemeWait) GetProcAddress(hDll, (LPCSTR)2 );

В таком варианте заработало.
MSDN — страшная штука.
Re[6]: [Q] GINA Startup & Style - вопрос закрыт
От: RightX Россия  
Дата: 20.07.06 07:14
Оценка:
Чтото я так и не понял из этой ветки, как это работает...
Обьясните плиз поподробней, что за чем вызывать, чтобы при загрузке Джины сразу был красивый интерфейс!

Заранее сенкс!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.