我不知道這是可能的,出於安全原因,但它可能是。附加到另一個進程中的模塊並調用公共方法?
我在我們的一個應用程序中發現了一個問題,修復它的一個方法是在進程內模塊上調用公共方法。
因此,我的應用程序(我無法修改)是使用名爲'SSOSettingsFileReader.dll'的引用dll,在SSOSettingsFileReader.dll中是一個名爲'ClearCache'的公共方法。我想編寫一個循環遍歷所有進程的控制檯應用程序,在每個名爲SSOSettingsFileReader的進程中搜索模塊並在每個進程上調用「ClearCache」。
這可能嗎?
到目前爲止,我可以得到模塊:
Process[] processes = Process.GetProcesses();
foreach (Process p in processes) {
if (p.ProcessName == "BTSNTSvc") {
ProcessModuleCollection modules = p.Modules;
foreach (ProcessModule m in modules) {
if (m.ModuleName == "SSOSettingsFileReader.dll") {
// What to do here?
// SSOSettingsFileReader sso = SomeWayToConvertModule(m)ToSSOSettingsFileReader();
// sso.ClearCache();
}
}
}
}
感謝
附:我正在使用VS2005和.Net2.0,但不僅限於此。
在應用程序中注入某些IL將更容易。 – leppie