以下示例已可靠地返回与活动窗口关联的进程的名称,但不适用于较新的现代/通用应用程序,因为它返回Windows 8上的帮助程序进程WWAHost.exe和ApplicationFrameHost.exe上的名称Windows 10而不是应用程序的名称.
HWND active_window = GetForegroundWindow();
GetWindowThreadProcessId(active_window, &active_process_id);
HANDLE active_process = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, active_process_id);
GetProcessImageFileName(active_process, image_name, 512);
Run Code Online (Sandbox Code Playgroud)
在Windows 10中,ApplicationFrameHost.exe是创建窗口句柄的过程,也是GetWindowThreadProcessId()返回的内容,是否有另一个Win32 API可用于获取活动的通用应用程序的活动进程?
还尝试使用GetApplicationUserModelId()和GetPackageFullName()没有成功,因为它们分别返回APPMODEL_ERROR_NO_APPLICATION和APPMODEL_ERROR_NO_PACKAGE,因为active_process句柄只是辅助进程而不是活动应用程序的进程.
在给定窗口的hwnd的情况下,用于获取Modern/Universal应用程序的进程名称的任何其他API,或以其他方式确定通用应用程序的进程名称是活动的.
提前致谢!
我正在开发C++应用程序(跨平台; Windows,Mac和Linux),需要使用带有libcurl的https协议与服务器进行安全通信(分别在Windows/Mac/Linux上使用winssl/darwinssl/openssl构建).我变的卷曲选项,CURLOPT_SSL_VERIFYPEER从0到1这应有助于防止中间人攻击问题.
这导致了初始搜索指向关闭该选项的问题,但在深入挖掘后我发现:
获取可以验证远程服务器的CA证书,并在连接时使用正确的选项指出此CA证书以进行验证.对于libcurl黑客:
curl_easy_setopt(curl, CURLOPT_CAPATH, capath);来自curl docs
和
获得更好/不同/更新的CA证书捆绑!一种选择是通过在curl构建树根中运行'make ca-bundle'来提取最近Firefox浏览器使用的那个,或者可能下载以这种方式为您生成的版本. 来自curl docs
我实际上使用CURLOPT_CAINFO了捆绑包,因为我CURLOPT_CAPATH在Windows上看到了一些问题; 卷曲文档.我已经下载并安装了这个捆绑软件以及Windows和Mac上的应用程序,我想知道这是否是正确的方法,或者是否有更好的做法.
最初,这会导致在某些公司网络或代理服务器后面运行的应用程序用户出现问题,这些问题似乎可以通过在Windows上构建针对winssl而不是openssl的libcurl来解决; 尽管可能将自己伪装成防火墙问题,但仍然不清楚,尽管看起来很可能.
抱歉这个长度.
ca-cert-bundle.crt将应用程序与应用程序一起安装有什么愚蠢之处,是否有任何不同的方式可以通过此安装的应用程序与服务器进行安全通信?
我有一个稍微独立但仍然非常相关的问题是CURLOPT_CAINFO在Linux上给出错误:
error setting certificate verify locations:
CAfile: ../share/my_application/curl-ca-bundle.crt
CApath: none
虽然尝试从应用程序中打开文件进行读取确实可以成功运行.编辑:我通过CURLOPT_CAINFO在Linux上设置字段(将其留空)并将依赖包添加ca-certificates到应用程序包来解决此问题.默认路径是正确的/etc/ssl/certs/ca-certificates.crt,似乎正在工作.对我而言,这比使用应用程序安装捆绑包要好一些.
编辑2:虽然解决了它似乎ca-certificates包有时不安装ca-certificates.crt而不是ca-bundle.crt和位置因不同的发行版而异,因为这个来源,happyassassin.net显示不同的Linux系统存储CA捆绑在不同的位置.对于如何处理这个问题似乎没有明确的答案.我是否应该在配置文件中使用用户可以修改的值,或者有关该主题的任何其他想法?
Edit3:有些用户指出我的名字存在于curl查找的路径之一中,我不完全确定这是怎么回事,因为我为curl指定的唯一内容是我构建openssl/cares库的地方. .
我意识到这是一个加载/多部分的问题,但它与标题所述的主题相同,我会感激任何帮助.
谢谢.