2013-06-20 46 views
0

我已經爲Windows 7創建了Credential Launcher,並且能夠在Tile按鈕單擊事件之後運行Windows應用程序,這非常容易。在GINA beofe登錄屏幕(命令行)中運行EXE應用程序

我添加了一些註冊表設置和*pbAutoLogon = FALSE;

但是現在我正在嘗試爲Windows XP做同樣的事情。

我應該針對哪個函數或者如何實現相同的結果?

回答

1

我看到你用「Gina」標記了你的問題,所以我猜你知道證書提供者在XP上不存在。

你的答案取決於正是你想要運行的程序,尤其是關於安全注意序列(SAS,或者當用戶按Ctrl-Alt-Delete鍵)

  • 的SAS之前使用WlxDisplaySASNotice
  • 的SAS後,使用WlxLoggedOutSAS

既然你不想寫一個整體GINA自己,你可以使用自定義吉娜換行msgina.dllHere is one I wrote,你可以找到我從Platform SDK開始的原創。

使用計算策略,你有機會只是某些事件之前或剛過執行代碼,就像一個成功登錄後運行程序,是這樣的:

int WINAPI WlxLoggedOutSAS(PVOID pWlxContext, DWORD dwSasType, PLUID pAuthenticationId, PSID pLogonSid, PDWORD pdwOptions, PHANDLE phToken, PWLX_MPR_NOTIFY_INFO pMprNotifyInfo, PVOID * pProfile) 
{ 
    int result; 

    result = pfWlxLoggedOutSAS(pWlxContext, dwSasType, pAuthenticationId, pLogonSid, pdwOptions, phToken, pMprNotifyInfo, pProfile); 

    if (result == WLX_SAS_ACTION_LOGON) 
    { 
     //We have a successful logon, let's run our code 
     run_my_custom_code(); 
    } 

    return result; 
} 

有一些注意事項,但:

  • 代碼無法阻止。 Winlogon將等待,但您的用戶可能不會。跨越一個進程並讓它運行。
  • 您的程序將以SYSTEM的權限運行,這是一種安全風險。沙盒你的過程可能很難。如果不能突破它,不要認爲沒有人可以...