2011-11-30 102 views
1

有人可以告訴我這是怎麼完成的?看看SmcGui.exe的「命令行」。你會發現,它的命名管道串......滿弦是:從命名管道啓動的可執行文件?

\\.\pipe\SygateSecurityAgentR41T67564 \\.\pipe\SygateSecurityAgentW18467T67564 

Screenshot of Task Manager

+0

看起來他們只是命令行參數;與vcpkgsrv.exe相同。無論是誰啓動該進程,都不遵循包含進程名稱作爲命令行第一個參數的約定(例如,通過CreateProcess)。 – Luke

+0

如果進程名稱不是第一個參數,那麼應用程序如何啓動? –

+0

這是CreateProcess()的一種僥倖,有兩種方式來指定.exe名稱。 –

回答

2

從MSDN文檔上[CreateProcess的] [1]

BOOL WINAPI CreateProcess(
    __in_opt  LPCTSTR lpApplicationName, 
    __inout_opt LPTSTR lpCommandLine, 
    __in_opt  LPSECURITY_ATTRIBUTES lpProcessAttributes, 
    __in_opt  LPSECURITY_ATTRIBUTES lpThreadAttributes, 
    __in   BOOL bInheritHandles, 
    __in   DWORD dwCreationFlags, 
    __in_opt  LPVOID lpEnvironment, 
    __in_opt  LPCTSTR lpCurrentDirectory, 
    __in   LPSTARTUPINFO lpStartupInfo, 
    __out  LPPROCESS_INFORMATION lpProcessInformation 
); 

lpApplicationName [in,optional]

該模塊的名稱爲 執行。該模塊可以是基於Windows的應用程序。如果 合適的子系統在本地計算機上可用,則它可以是 某些其他類型的模塊(例如,MS-DOS或OS/2)。

字符串 可以指定要執行的模塊的完整路徑和文件名,也可以指定部分名稱。在部分名稱的情況下, 函數使用當前驅動器和當前目錄來完成 規範。該功能不會使用搜索路徑。這個 參數必須包含文件擴展名;假定沒有默認擴展 。

lpApplicationName參數可以是NULL。在這種情況下, 模塊名稱必須是 lpCommandLine字符串中的第一個以空格分隔的令牌。

+0

在測試了一個指定了'ApplicationName'屬性的CreateProcess調用之後,我能夠複製它。顯然,進程查看器中的「命令行」屬性並不像我理解的那樣。 –

相關問題