问题描述
我有一个 DLL 构建,用于检查 Internet 信息服务是否已安装、运行并有条件地从 applicationHost.config 文件中读取数据路径。我检查了 IIS 的安装路径,看看是否需要禁用 Syswow64 文件重定向,因为我所有的 dll 版本都是 win32。这对我来说总是失败。我使用了 GetLastError,它说函数调用返回 0。我将函数复制到一个小 exe 中,它运行得很好,将我需要的信息发送到屏幕上。 DLL 和 EXE 之间有显着区别吗?这是在 dll 中不起作用的东西吗?我的印象是他们非常相似。功能:
BOOL isIISRunning() //simple check to see if inetmgr is a process
{
bool isrunning = FALSE;
PROCESSENTRY32 entry;
entry.dwSize = sizeof(PROCESSENTRY32);
HANDLE iis = Createtoolhelp32Snapshot(TH32CS_SNAPPROCESS,NULL);
if (Process32First(iis,&entry) == TRUE)
{
while (Process32Next(iis,&entry) == TRUE)
{
if (_tcsicmp(entry.szExeFile,_T("inetmgr.exe")) == 0)
{
isrunning = TRUE;
break;
}
}
}
CloseHandle(iis);
return isrunning;
}
当我创建一个控制台应用程序 exe 并调用此函数时,它会返回有关在多台计算机上运行与否的 IIS 的正确信息。当我在我的 DLL 构建中调用这个函数时,它每次都返回 false。谁能解释一下我做错了什么?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)