草庐IT

api安全

全部标签

c++ - RegSetValueEx 线程安全吗?

我怀疑RegSetValueEx是线程安全的,但希望得到社区的一些确认。如果多线程调用,会不会有副作用?RegSetValueExMSDNdocumentation根本没有提到线程安全。 最佳答案 相关Q:IstheWin32Registry‘threadsafe’? 关于c++-RegSetValueEx线程安全吗?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/2847488

c++ - LoadBitMap() API 会产生绘画问题吗?

我有一个用C++、MFC编写的遗留系统。我正在检查一段代码,其中LoadBitmap()替换为LoadImage()应用程序接口(interface)。代码中的注释说“LoadBitmap()使用内核内存中的分页池,如果使用量达到最大限制,则会弹出绘制问题。所以LoadImage应该使用API”。我在谷歌上搜索了一下,但没有得到太多信息。当我检查MSDN,他们说“请注意,不推荐使用LoadBitmap加载OEM位图,仅支持向后兼容”我的问题是:1.LoadBitmap()API有什么问题吗?为什么我们应该更喜欢LoadImage()而不是LoadBitmap()?2.什么是OEM位图?

c++ - 安全获取在 Windows API 中运行可执行文件的路径

嘿,我正在尝试获取与我的exe文件位于同一文件夹中的dll的路径。要走的路似乎是使用QueryFullProcessImageName()或GetModuleFileName()之一来获取正在运行的可执行文件的路径,然后使用字符串操作使其成为改为所需库的路径。不幸的是,这两个函数都没有提供提前找出所需缓冲区大小的方法。我试过为nSize参数传递零,但这没有达到预期的效果。执行此操作的最佳实践方法是什么? 最佳答案 在实践中,您可以使用WindowsAPIMAX_PATH作为您的缓冲区大小,也许加1以提高安全性。理论上Windows路

windows - 将文件夹绑定(bind)到文件的 API 是什么(如 Internet Explorer)

当您在InternetExplorer中保存HTML文件时,它会创建一个包含所有链接文件的子文件夹。这两个链接在一起,因此当您删除文件时,文件夹也会随之消失。我想在我的应用中做同样的事情。谁能给我一个相关API的指针?谢谢 最佳答案 HTML文件及其附带资源目录的配对是一种特殊情况(由shell实现),因此不是文件系统的功能,据我所知也不是任何可扩展的shellAPI。请参阅SHFileOperation中的连接文件文档。 关于windows-将文件夹绑定(bind)到文件的API是什么

windows - 如何清除 AuthzGetInformationFromContext API 使用的缓存?

我有一个域,我在客户端计算机上使用AuthzGetInformationFromContextAPI来检索用户所属组的sid。它工作正常。但是,如果我将用户添加到某个组或将他从域Controller上的某个组中删除,此API仍会显示旧的组列表。在这种情况下,如果我等待10分钟或更长时间,它将显示更新的组列表。我尝试在不同的计算机上执行此操作,发现该应用程序会在不同的时间显示更新的组列表。所以,它不是域Controller缓存。此外,我的应用程序退出并重新启动。因此,它也不是应用程序级缓存。所以,我相信有一些计算机级别的缓存用于组成员(通过此API检索)。有谁知道如何以编程方式清除此缓存

c# - 用于自动化的 User32 API 自定义 PostMessage

我想通过C#自动化一个名为Spotify的程序,(我认为)最好的方法是触发假按键。我想编程暂停播放,但我对这些东西的了解还不够多,无法找到按键以外的其他方法。所以我使用VisualStudio的Spy++查看按下键盘上的播放按钮时Spotify收到什么消息,我将该消息中的数据复制到我的控制台应用程序并运行它,当我运行时我可以在Spy++的消息记录中看到PostMessage,所以这是有效的,但它不会暂停/播放我的音乐。我想这是因为我还必须发送另一个带有另一个目的地的PostMessage,但我怎么知道还要发送什么?发布消息调用:MessageHelper.PostMessage((in

windows - 运行非线程安全 Dll 的多个 'instances'?

我有一个dll的源代码还不是线程安全的。dll相当复杂,需要相当长的时间才能使其线程安全。所以我想出了独立运行Dll的几个“副本”的想法。最简单的方法可能是创建N个重命名的Dll副本并为每个线程加载一个单独的Dll。这是可行的解决方案吗?有没有更好的类似方法?是否可能存在一些包装代码?我知道这根本不是一个好的工程解决方案。请不要怪我。但它可能会解决许多问题。编辑2017我已经做到了,而且没有任何问题。伟大的!但请注意以下几点:http://msdn.microsoft.com/en-us/library/2s9wt68x%28v=vs.80%29.aspx如果DLL将任何非本地数据或对

c++ - OpenCV - API 位置不是文档吗?

也许我被MSDN宠坏了,但我正在焦头烂额地寻找API位于哪些DLL中。这让我发疯了,我已经开始编写一些可以运行的代码DLL导出表,这样我就可以找到函数了!!就像在MSDN上一样,如果我需要一个Windows函数,例如GetModuleHandle()。我转到MSDN页面:http://msdn.microsoft.com/en-us/library/windows/desktop/ms683199(v=vs.85).aspx它准确地告诉我函数所在的位置:Library-Kernel32.libDLL-Kernel32.dll现在对于OpenCV,我正在寻找函数cvCreateKalma

Windows 更新代理 API - 搜索更新

我编写了一个使用Windows更新代理API(IUpdateSearcher、IUpdateDownloader、IUpdateInstaller等)的Powershell脚本。一切正常,脚本找到可用的更新,下载并安装它们。但是在搜索连续更新的时候出现了问题。例如,有.NetFramework4.5.2的更新。更新通过脚本安装,然后PC重新启动。现在应该有可用的.NetFramework4.5.2语言包更新。但事实并非如此。至少不是通过API。可以使用GUI(WindowsUpdate)进行手动搜索。经过手动搜索,API很好地找到了更新!我的脚本中缺少什么?我在Microsoft文档中

c++ - 在不同的线程上解除分配 BSTR 是否安全?

如果我在一个线程上调用一个返回BSTR的COM方法,那么从另一个线程?COM调用完成后,我将不再在第一个线程上使用BSTR,因此应该不会有任何并发​​问题。但是考虑到COM与线程的关系,我不确定SysFreeString()是否依赖于在同一线程上分配的BSTR。示例代码:BSTRvalue=nullptr;HRESULThr=pComObject->DoSomething(&value);if(FAILED(hr)){returnhr;}std::threadt([value]{//dosomethingwithvalueSysFreeString(value);});t.detach