delphi - Delphi:如何直接读取windows dns缓存?
问题描述
我知道我可以使用“ipconfig /displaydns”和 Powershell 的“Show-DnsServerCache”并从该命令中获取输出,但我想直接执行此操作。我在 stackoverflow 中找到了如何在 C 中执行此操作的源代码,但我无法将其转换为 delphi。
有谁知道如何在delphi中做到这一点?我在谷歌上找不到任何东西。
提前致谢。
(这是我的第一篇文章,英语不是我的母语,如果我不清楚,请见谅)
我找到的代码:
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
typedef struct _DNS_CACHE_ENTRY {
struct _DNS_CACHE_ENTRY* pNext; // Pointer to next entry
PWSTR pszName; // DNS Record Name
unsigned short wType; // DNS Record Type
unsigned short wDataLength; // Not referenced
unsigned long dwFlags; // DNS Record Flags
} DNSCACHEENTRY, *PDNSCACHEENTRY;
typedef int(WINAPI *DNS_GET_CACHE_DATA_TABLE)(PDNSCACHEENTRY);
int main(int argc, char **argv) {
PDNSCACHEENTRY pEntry = (PDNSCACHEENTRY)malloc(sizeof(DNSCACHEENTRY));
// Loading DLL
HINSTANCE hLib = LoadLibrary(TEXT("DNSAPI.dll"));
// Get function address
DNS_GET_CACHE_DATA_TABLE DnsGetCacheDataTable =
(DNS_GET_CACHE_DATA_TABLE)GetProcAddress(hLib, "DnsGetCacheDataTable");
int stat = DnsGetCacheDataTable(pEntry);
printf("stat = %d\n", stat);
pEntry = pEntry->pNext;
while(pEntry) {
wprintf(L"%s : %d\n", (pEntry->pszName), (pEntry->wType));
pEntry = pEntry->pNext;
}
free(pEntry);
return 0;
}
解决方案
推荐阅读
- reactjs - 如何在 react-native redux 中使用 componentDidMount 调用 componentDidUpdate()?
- sql - 为什么 SQL Select 语句语法不正确?
- javascript - 如何使用javascript从字符串中删除特殊字符
- graphql - apollo-link-state 以及如何访问本地状态/缓存?
- excel - 有没有办法同时将多个用户选择的单元格复制到另一个工作表中?
- laravel - Laravel 5.1 与 Set-Cookie
- xpath - 如何在 True 客户端脚本中参数化 xpath
- javascript - 如何将 json 格式的 java 输出发送到 html 表单
- go - 结构初始化程序错误中的值太少
- ios - 如何从图像路径获取 MIME 类型以发送到服务器