GetDllDirectory
產生一個模糊的值。當這個調用產生的字符串是空的,這意味着執行下列操作之一:如何處理GetDllDirectory生成的模糊值?
- 沒有人叫
SetDllDirectory
- 有人通過
NULL
到SetDllDirectory
- 人傳遞了一個空字符串
SetDllDirectory
前兩種情況相當於我的目的,但第三種情況是一個問題。如果我想寫保存/恢復代碼(請撥GetDllDirectory
以保存「舊」值,SetDllDirectory
臨時設置「新」值,然後SetDllDirectory
再次恢復「舊」值),那麼我會冒險逆轉一些其他程序員的意圖。
如果其他程序員打算將當前工作目錄設置爲DLL搜索順序(換句話說,前兩個項目符號中的一個爲真),並且我將一個空字符串傳遞給SetDllDirectory
,我將採取當前工作目錄移出DLL搜索順序,顛倒另一個程序員的意圖。
任何人都可以提出一種方法來消除或解決這個歧義?
P.S.我知道將DLL搜索順序中的當前工作目錄解釋爲安全漏洞。儘管如此,這是默認行爲,我的代碼無法撤銷該行爲;我的代碼需要與所有潛在呼叫者的期望保持一致,其中很多呼叫者都是大而古老的,並且超出了我的控制範圍。
這將如我所料。另一方面,很難知道等待某人發佈一個好主意需要多長時間...... :-) – 2010-05-28 18:41:50
@Integer:足夠長嗎? – 2010-06-04 20:52:53