草庐IT

windows - 文件安全属性在文件副本上搞砸了

我有一个Windows服务可以更新我们的产品。它将产品文件复制到一个临时目录,通常是“C:\Windows\Temp”,修补二进制文件,然后使用MoveFileEx在重新启动时将文件复制回安装目录,通常是“C:\ProgramFiles\Product””。安装目录中的文件从父文件夹继承它们的安全属性。在复制、打补丁和重启后,安装目录中的文件缺少一些ACL。具体来说,这些文件不再具有用户组的ACL,因此用户在重新启动后无法再运行该程序。谁能解释一下这是怎么回事?似乎从安装目录复制到临时目录,文件继承了临时目录的ACL。但是,在MoveFileEx/Reboot上,文件仅继承安装目录和临

c++ - 在 Win32 中从字符串中解析日期

我有一个包含日期的字符串,另一个字符串包含第一个字符串的日期格式。有没有我可以调用的函数将该日期转换为类似SYSTEMTIME结构的东西?基本上,我想要GetDateFormat()的反义词. 最佳答案 它的功能与您描述的不完全相同,但我将从使用COleDateTime::ParseDateTime开始。它适用于本地化的日期时间格式。 关于c++-在Win32中从字符串中解析日期,我们在StackOverflow上找到一个类似的问题: https://stac

windows - 如何使用 Windows API 从麦克风录制 wav 声音?

如何使用WindowsAPI从麦克风录制wav声音? 最佳答案 您可以使用一系列waveInXXXWindowsAPI来录制音频。(即waveInOpen、waveInPrepareHeader、waveInAddBuffer、waveInStart...)这些将以“原始”PCM格式录制音频,然后您可以将其放入WAV文件中。(WAV文件基本上可以只是一个“包含”原始PCM音频的RIFF文件容器)。这是MSDN引用页:RecordingwithaWaveform-AudioDevice 关

windows - 您如何允许 MDI 应用程序中的窗口离开其带有 Win32 的父容器?

我有一个MDI应用程序。我想在子窗口的非客户端标题栏上添加一个图标,允许窗口独立于父MDI容器float,允许用户使用子窗口并将它们任意放置在桌面周围,在MDI之外窗口。我已经看到它完成了,所以我知道这是可能的,但我很难弄清楚如何完成它。我使用的是WTL(Windows模板库),但我将其标记为MFC和Win32,因为我相信基本原则是相同的,而且人们可能了解WindowsAPI的各个方面。 最佳答案 我已经有一段时间没有这样做了,但我认为调用SetParent(your_hwnd,0)让窗口脱离其父窗口就足够了。消息传递会稍微改变,因

c++ - boost::interprocess_mutex 与 Win32 native 互斥锁的性能如何?

请注意,我可以在boost源代码中进行研究,如果没有人提供答案,我可能会这样做来回答我自己的好奇心。但是我确实会问,因为也许有人已经做过这种比较并且可以权威地回答?似乎在进程之间创建一个共享内存映射文件,并通过使用InterlockedIncrement()构造,可以创建一个类似于CRITICAL_SECTION的主要用户模式互斥体,它在进程间同步方面比Win32Mutex性能要好得多。所以我的期望是,boost::interprocess_mutex的Win32实现可能会以这种方式实现,并且比本地API产品快得多。不过我只是有一个假设,我不知道通过现场测试boost::interpr

windows - 多线程:事件驱动与消息驱动

用win32事件对象(CreateEvent)或线程窗口消息队列开发多线程时,性能有差异吗?两者都应该使用某种WaitFor...调用。我自己的代码几乎完全基于事件,但如果不使用消息,我可能会丢失一些东西。 最佳答案 如果您担心线程消息和内核事件之间的性能差异,那么您可能不应该使用线程消息。Win32线程消息队列是一种最初为Windows16开发的机制——当时还没有线程。它们已经发展到可以处理Win32的线程模型,但在幕后它们是相当复杂的野兽。这有利也有弊。缺点是,很简单,它们比其他形式的线程间同步和通信更慢,并且有更多限制。对于初

windows - 如何显示 'Send to' 和 'Open With' 上下文菜单?

前段时间我问过howtopopuptheWindowscontext(right-click)menuforacertainfileinDelphi.但是,即使一切正常(几乎)正常,“发送到...”和“打开方式...”子菜单也没有任何项目,即使当我在资源管理器中右键单击相同的文件名时,它们也是如此工作正常。(例如,“发送至...”有“桌面(创建截图)”、“电子邮件收件人”等)。我怎样才能让这些菜单出现? 最佳答案 几年前,雷蒙德·陈(RaymondChen)在关于托管上下文菜单的多部分系列文章中写到了这个确切的问题。他文章的关键主题

windows - RegOpenKeyEx 在失败时返回什么错误代码?

MSDN文档:http://msdn.microsoft.com/en-us/library/ms724897(VS.85).aspx对于此函数可能返回的错误,奇怪地保持沉默。如果key不存在,我对返回什么错误代码特别感兴趣,但更全面的信息也很好。 最佳答案 这是标准的Win32内核错误代码。GetLastError()返回的代码类型,因此可以在WinError.h中找到可能值的集合。请注意,这些不是HRESULT值。//Theconfigurationregistrydatabaseiscorrupt.//#defineERROR

C++:如何为您的应用程序正确注册和注销文件类型关联(以编程方式)

时间是在以下位置设置文件关联:HEY_CLASSES_ROOT\然而,这似乎是可能的,但不再是一个不完整的解决方案。整个注册表中还有其他关联。例如:HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Explorer\KindMapHKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Explorer\Extensions以及以上所有内容,但由HKEY_USERS执行\Microsoft添加了他们的SetDefaultAssociations控制面板

windows - 如何使用 VirtualAllocEx 为代码洞穴腾出空间?

如何使用VirtualAllocEx为codecave腾出空间??我目前拥有一个“可用空间”很少的软件,我读到VirtualAllocEx用于创建这个空间.. 最佳答案 清除“代码洞穴”问题后,您会发现以下有趣的代码,它枚举了当前进程中由VirtualAllocEx分配的block,并找到所有PE(DLL和EXE本身)。SYSTEM_INFOsi;MEMORY_BASIC_INFORMATIONmbi;DWORDnOffset=0,cbReturned,dwMem;GetSystemInfo(&si);for(dwMem=0;dwM