2012-10-03 28 views
0

我發現在Windows環境下運行的程序的命令行參數存儲在Process Environment block中。我發現在PEB內部有一個稱爲RTL_USER_PROCESS_PARAMETERS的結構,它包含一個名爲UNICODE_STRING CommandLine的成員變量; 我可以通過編寫c代碼來訪問這個變量嗎?請協助 有關PEB的更多信息,請參閱此鏈接 http://msdn.microsoft.com/en-us/library/aa813706%28VS.85%29.aspx如何訪問UNICODE_STRING的CommandLine變量?

+1

就叫GetCommandLineW。 –

+0

我們是否需要這個>的哪個頭文件? – archies50

回答

2

您需要GetCommandLine函數。即使你的程序是ANSI,你仍然可以明確地調用寬版本GetCommandLineW

此功能是documented on MSDN。查看Requirements部分,您會看到它在WinBase.h中定義,但您應該包含Windows.h。它只能用於自Windows XP,所以這取決於SDK的版本,您正在使用,您可能需要定義_WIN32_WINNT第一:

#define _WIN32_WINNT 0x0502 
#include <windows.h> 
+0

實際上,GetCommandLine自Windows NT 3.1以來一直可用,但MSDN文檔只能回溯到XP。 –

+0

@RaymondChen:謝謝。我認爲這有點奇怪。 –

+0

我害怕現在搞PEB,我想過其他的方式。現在我的觀點是......假設有一個調用程序的主體(我知道main被調用的地方可以說它的_START),那麼是否有可能說參數存儲在x地址空間中在main被調用之前。例如在地址5000處調用main ...我們可以說每次參數的地址都在內存的位置4500。 ? – archies50