【问题标题】:Calls to the FreeSid() function crashes my MFC application on Windows 7调用 FreeSid() 函数会使我在 Windows 7 上的 MFC 应用程序崩溃
【发布时间】:2012-04-05 17:53:48
【问题描述】:

FreeSid() 在我们的 MFC 应用程序中的 Windows 7 上经常崩溃。多年来,它在 Windows XP 中一直运行良好。

有人知道解决方法吗?

Someone else had this same problem in VB,但不清楚如何在 C++ 中修复它。

【问题讨论】:

  • VB 6 人遇到的问题是他用错误的签名声明了函数。这可能在这里不适用。您是否传递了一个有效的指向函数的指针?我们需要看一些代码...
  • 扩展 Cody 的评论,仅仅因为它没有在 XP 中崩溃并不意味着您的代码没有问题。
  • 感谢您的快速反馈,我们将重新检查指针使用情况并回来。
  • 我们?你和 C++ 编译器?

标签: c++ windows winapi mfc


【解决方案1】:

有多种方法可以释放 SID。如果您从ConvertStringSidToSid 获得它,请使用LocalFree。如果您从AllocateAndInitializeSid 获得它,请使用FreeSid。将两者混合会产生未定义的结果,这可能在 Windows 版本之间有所不同。

【讨论】:

  • 由于以下用户组而发生此问题 SQLServer2005SQLBrowserUser$Machine2 SQLServerMSSQLServerADHelperUser$Machine2 SQLServerMSSQLUser$Machine2$SQLEXPRESS SQLServerSQLAgentUser$Machine2$SQLEXPRESS 我们摆脱了这些用户组,代码开始正常工作。谢谢
  • @user1314356:您的代码仍然损坏,您只是通过删除暴露问题的环境来隐藏问题。
  • 是的,我们在将代码迁移到 Windows7 和 VS 2010 时遇到了很多问题,我们很高兴有一个解决方法
猜你喜欢
  • 2023-03-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多