草庐IT

消息安全

全部标签

c++ - Windows 操作系统中的线程安全和原子读取

我的应用程序中有这段代码。我怀疑它不是线程安全的,因此决定询问SOers。int*volatileint_ptr;intcount;线程1:voidgrow(intnew_count){if(new_count线程2:intget_value(intindex){returnint_ptr[index];}我知道可以使用CRITICAL_SECTION,但线程1可能一周运行一次,而线程2一天运行数百万次。在99.99999%的访问int_ptr的尝试中,第二个线程将白白进入和退出临界区。这对我来说没有意义。该应用程序只能在Windows2000和更高版本的Intel处理器(显然是多核处

windows - 为什么有些窗口收不到 Windows 消息

在VisualStudio上使用Spy++工具,我可以看到像桌面或资源管理器(文件资源管理器)之类的窗口收到WM_消息,但像Firefox或VisualStudio这样的窗口不接收消息。为什么有些人能收到消息而有些人没有。(对于WM_消息,我指的是WM_MOUSELEAVE或WM_SETCURSOR) 最佳答案 Spy++需要注入(inject)一个钩子(Hook)来监Windows口消息。为此,钩子(Hook)函数的位数需要与拥有窗口的进程的位数相匹配,因此您应该使用32位版本的Spy++来监视32位应用程序的窗口,以及64位版本

windows - 从我的应用程序发送消息 Ctrl+Alt+Del

我想在MFC中编写一个小实用程序,它将Ctrl+Alt+Del消息发送到操作系统。任何人都可以帮助我如何实现这一目标?我试过:::PostMessage(HWND_BROADCAST,WM_HOTKEY,0,MAKELONG(MOD_CONTROL|MOD_ALT,VK_DELETE));但这行不通。我想发送Ctrl+Alt+Del而不是调用TaskMgr.exe。此外,它适用于我的本地操作系统(WindowsXPServicepack2)。基本上我想使用这个应用程序来锁定我的机器并安排一些操作以及锁定。 最佳答案 这不是您可以模拟

c++ - Windows 消息异常

可能只是某种粗略的疏忽,但我在消息循环中没有收到任何WM_SIZE消息。但是,我确实在WndProc中收到了它们。我认为Windows循环将消息发送给WndProc?LRESULTCALLBACKWndProc(HWNDhWnd,UINTmessage,WPARAMwParam,LPARAMlParam){switch(message){//thismessageisreadwhenthewindowisclosedcaseWM_DESTROY:{//closetheapplicationentirelyPostQuitMessage(0);return0;}break;caseWM_

c++ - 如何使用 C++ 和 Windows API 将击键/消息发送到 Windows 7?

例如,程序是否可以向Windows7(运行它的操作系统)发送击键或消息,以模拟用户物理按下键盘上的Windows键的效果?在C++中,使用WindowsAPI? 最佳答案 SendInput功能已经存在很长时间了,应该可以满足您的需要。 关于c++-如何使用C++和WindowsAPI将击键/消息发送到Windows7?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/919010

windows - 在 Windows 命令中使用密码参数是否安全?

假设我们有一个可以接受密码(或其他敏感信息)参数的程序或脚本:>program.exe/password:secret对于Linux,最佳实践通常建议反对直接在命令行上指定密码,因为存在潜在的安全问题(密码可能出现在shell的历史文件和系统的进程表中):$./program.sh--password'secret'&[1]4152$cat/proc/4152/cmdline/bin/sh./program.sh--passwordsecret但是,在四处搜索时,我没有看到针对Windows的同样强烈的推荐。在为Windows编写程序和脚本时,除了命令行选项的参数之外,我们是否应该提供

.net - 文件的安全流更新

我们通过将新记录写入临时文件来执行大型文本文件的更新,然后用临时文件替换旧文件。一个大大简化的版本:vartpath=Path.GetTempFileName();try{using(varsf=newStreamReader(sourcepath))using(vartf=newStreamWriter(tpath)){stringline;while((line=sf.ReadLine())!=null)tf.WriteLine(UpdateLine(line));}File.Delete(sourcepath);File.Move(tpath,sourcepath);}catch

windows - 复制 Windows XP 上正在运行的进程使用的 dll 是否安全?

这是在WindowsXP上。我有一个正在运行的进程(我想保持运行)。如果我复制它使用的dll(例如,将其替换为较新的版本),这是否会导致正在运行的进程出现问题,或者代码是否已经加载,所以这无关紧要? 最佳答案 您不应该复制正在运行的进程正在使用的dll。为了替换dll,需要将其标记为删除并在下次重新启动时替换。如果您希望手动执行此操作,则需要停止该过程。如果您可以复制它-那么dll没有像您怀疑的那样被使用,如果它被延迟绑定(bind)那么您可以在一个过程中复制它进程没有主动锁定它的时间-并且提供dll的内部结构对事件进程没有任何不利

c++ - 如何判断一个线程是否有消息队列?

有什么方法可以通过threadId判断一个线程是否有消息队列?基本上有一些windowsapi只有在线程有消息queue.window时才工作 最佳答案 您可以使用带有线程ID的PostThreadMessage。如果PostThreadMessage返回false且GetLastError返回ERROR_INVALID_THREAD_ID,则线程ID无效或线程没有消息队列。更多信息http://msdn.microsoft.com/en-us/library/ms644946(VS.85).aspx

windows - 不同的 Windows 操作系统使用了多少个安全环?

我问这个问题,因为我试图搜索所有Windows操作系统(从9x到Windows8,包括WindowsCE/Embedded)的信息,但没有成功,我没有得到准确的计数不同版本的铃声,关于内存范围等。MSDN中有一些关于native开发(KMDF)的信息,但仅适用于比Win32更低级别的工作,并且没有关于所有环和访问每个环的完整信息。你能帮我回答这个问题吗? 最佳答案 现在没有主要操作系统(至少在桌面上没有)使用超过2个环,原因很简单,在一个主要体系结构上,进行系统调用的现代高效方式(例如SYSENTER)专门支持从ring-3到rin