在C++中,通过引用扩展范围是否安全?
在代码中,我的意思是:
MyCLass& function badIdea()
{
MyClass obj1;
...
return obj1;
}
Run Code Online (Sandbox Code Playgroud) 使用两个密钥(可能是基于密码的)完成数据加密的基本原理是什么,但只需要两个密钥中的一个(任一个)来解密数据?
例如,使用用户的密码和公司的密码对数据进行加密,然后他或他的公司可以解密数据.他们都不知道其他密码.仅存储加密数据的一个副本.
我不是指公钥/私钥.可能通过对称密钥密码术,可能涉及将密钥异或一起用于加密.
更新:我还想找到一个不涉及存储密钥的解决方案.
我们有一个单片MFC GUI应用程序,它接近它在C++中的生命.我们计划在C#中构建新功能,并在每个应用程序之间传递数据.
问题是:在C++和C#之间传递数据的最佳方法是什么?
注意:
两端都有一个GUI前端,可能只需要传递像Id这样的简单数据,并且可能有一种机制,它向另一个应用程序指示要使用的进程/功能.
例如,其中一个应用程序将是C#中的CRM系统,当双击网格中的一行时,会传递customerId和一条消息,以在MFC应用程序的客户表单中打开该客户.
我做了一些研究,选项似乎是Windows Messaging,Memory Mapping,Named Pipes或类似Windows Sockets的东西.在这个阶段,我们倾向于命名管道,但真的很感激其他建议或提示或其他人的经验.
是否有某种方法可以在程序终止时检测文件句柄泄漏?
特别是我想确保所有创建的句柄都在代码中释放.
例如,我可能在某个地方有一个CreateFile(),在程序终止时,我想检测并确保所有这些都关闭.
采用标准的Windows应用程序.它使用LoadLibrary加载DLL来调用其中的函数(我们称之为DLL_A).该函数加载另一个DLL(我们称之为DLL_B).应用程序现在使用FreeLibrary卸载DLL_A DLL,因为它不再需要它.
问题是: DLL_B是否仍在内存中并加载?
这是我可以依赖的东西,还是没有文件记录?
在调试时,有时您需要附加已经运行的进程,而不是仅在调试器中启动应用程序.
我自己常常放入Sleep()或MessageBox调用,以便更容易连接调试器.我担心其中一些可能最终会被提交给源代码控制.
在延迟足够时间的同时避免这种情况的最佳方法是什么,以便可以将调试器连接到正在运行的进程?
用#ifdef _DEBUG一种方式保护睡眠或消息框,但我想知道是否有更好的方法.
睡眠时,您还有一个问题,即您可能无法及时附着.使用MessageBox,您可能遇到远程调试或调试没有可见GUI的进程的问题(示例在Vista上作为服务运行)
在Windows中,是否有一种简单的方法来判断文件夹是否有更改的子文件?
我验证了,当子文件更改时,文件夹上的最后修改日期不会更新.
我可以设置一个可以修改此行为的注册表项吗?
如果重要,我正在使用NTFS卷.
我最终希望从C++程序中获得这种能力.
递归扫描整个目录对我来说不起作用,因为文件夹太大了.
更新:我确实需要一种方法来实现这一点,而不会在更改发生时运行进程.因此,安装文件系统观察器对我来说并不是最佳选择.
Update2:存档位也不起作用,因为它与上次修改日期有同样的问题.将设置文件的存档位,但文件夹不会.
学习高级批处理文件的最佳免费资源是什么?
为什么管道被认为是危险的?可以采取哪些措施来避免这些安全问题?
我最感兴趣的是Windows,但如果您有其他操作系统信息,请提供.
c++ ×6
c ×2
ipc ×2
visual-c++ ×2
winapi ×2
windows ×2
batch-file ×1
c# ×1
cryptography ×1
debugbreak ×1
debugging ×1
dll ×1
dos ×1
encryption ×1
filesystems ×1
named-pipes ×1
ntfs ×1
pipe ×1
reference ×1
scope ×1
security ×1
sockets ×1