2016-07-27 28 views
1

搜索網絡並沒有找到足夠的答案,我要再問一次: 有什麼辦法增加的最大金額的GDI對象Windows 10?如何增加GDI Object for Windows 10的最大數量?

我使用的應用程序是用VB6與一些第三方控件(從控制泄漏是可能的),它使用了大量的子窗口的跨應用程序顯示數據。

編輯: 應用程序本身的設計製造非常大的用戶控件的多個intances。每個控件包含大量修改的第三方網格,工具欄和窗體。表單本身可以打開不同的用戶控件(包括網格,工具欄和表單)等等。因此創建了大量的句柄。我們一直在尋找漏洞並立即修復它們,但不幸的是,並非所有事情都是泄漏,而是應用程序設計的一個副作用(這是我的時間之前做出的)。

我試過幾件事情,從下

[HKEY_LOCAL_MACHINE \ SOFTWARE \微軟\的Windows NT \ CURRENTVERSION \的Windows \ GDIProcessHandleQuota]

[HKEY_LOCAL_MACHINE \ SOFTWARE \ WOW6432Node \微軟增加了註冊表值\ Windows NT \ CurrentVersion \ Windows \ GDIProcessHandleQuota]

增加桌面堆但沒有任何影響。即使在重新啓動後,限制仍然是10000個句柄。

好像有隱藏窗​​口內的某處一個靜態值或覆蓋值,因爲即使降低值不會影響的10000個手柄極限註冊表。

在此先感謝!

+0

[這可能是有幫助的(http://stackoverflow.com/questions/9723470/whats-the-upper-limit-on-gdi-objects-for-one-process-in-windows-7)你能發佈你的代碼也涉及?如果創建過多,可能會限制手柄。 –

+0

感謝您的回覆。我已經找到那篇文章。我也讀過那裏張貼的鏈接,但沒有幫助。更改註冊表工作到Windows 8.1。只有Windows 10會導致問題,因爲像我上面所說的那樣,它似乎不像之前的其他Windows版本那樣接受更改的值。發佈受影響的代碼是一個問題,因爲整個應用程序都受到影響,但我會在問題中添加對應用程序的更詳細說明。 –

+0

我做了一些閱讀,並找到了桌面堆的參考。 [測試此溶液超時](https://social.msdn.microsoft.com/Forums/sqlserver/en-US/c4fd65cc-2b87-4478-9997-828071220fcd/windows-10-gdi-objects-limit?forum=windowscompatibility ),並導致你[這個kb頁面](https://support.microsoft.com/en-us/kb/184802) –

回答

0

您必須重新啓動Windows 10才能使此註冊表設置生效。另請注意,在x64上註冊表中有兩個GDIProcessHandleQuota值。