Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
设置安全信息错误=6 我对Windows内核的C++编程很陌生。在过去的几个小时里,我一直在试图弄清楚这是怎么回事。所以基本上这是我的错误设置securityinfo(hNewDesktop)failed error=6。它通过了第一个循环,但是我无法为新桌面设置SecurityInfo HDESK dNew; BOOL closedesk; HANDLE hApp; HDESK hThreadDT = GetThreadDesktop(GetCurrentThreadId()); //Make a new desktop dNew = CreateDesktop(_T("test"), 0, 0, 0, DESKTOP_SWITCHDESKTOP| DESKTOP_WRITEOBJECTS| DESKTOP_READOBJECTS| DESKTOP_ENUMERATE| DESKTOP_CREATEWINDOW| DESKTOP_CREATEMENU, NULL); if(!dNew) { _tprintf(_T("Failed to create new desktop !!\n\n")); return 0; } PACL pSacl; PSECURITY_DESCRIPTOR pSecurityDescriptor; DWORD dwResult; dwResult = GetSecurityInfo(hThreadDT, SE_WINDOW_OBJECT, LABEL_SECURITY_INFORMATION, NULL, NULL, NULL, &pSacl, &pSecurityDescriptor); if (dwResult == ERROR_SUCCESS) { if (pSacl != NULL) { dwResult = SetSecurityInfo(_T("test"), SE_WINDOW_OBJECT, LABEL_SECURITY_INFORMATION, NULL, NULL, NULL, pSacl); if (dwResult != ERROR_SUCCESS) _tprintf(_T("SetSecurityInfo(hNewDesktop) failed, error = %d"), dwResult); } LocalFree(pSecurityDescriptor); } else { _tprintf(_T("GetSecurityInfo(hDefaultDesktop) failed, error = %d"), dwResult); }_C++_Windows_Winapi - Fatal编程技术网

设置安全信息错误=6 我对Windows内核的C++编程很陌生。在过去的几个小时里,我一直在试图弄清楚这是怎么回事。所以基本上这是我的错误设置securityinfo(hNewDesktop)failed error=6。它通过了第一个循环,但是我无法为新桌面设置SecurityInfo HDESK dNew; BOOL closedesk; HANDLE hApp; HDESK hThreadDT = GetThreadDesktop(GetCurrentThreadId()); //Make a new desktop dNew = CreateDesktop(_T("test"), 0, 0, 0, DESKTOP_SWITCHDESKTOP| DESKTOP_WRITEOBJECTS| DESKTOP_READOBJECTS| DESKTOP_ENUMERATE| DESKTOP_CREATEWINDOW| DESKTOP_CREATEMENU, NULL); if(!dNew) { _tprintf(_T("Failed to create new desktop !!\n\n")); return 0; } PACL pSacl; PSECURITY_DESCRIPTOR pSecurityDescriptor; DWORD dwResult; dwResult = GetSecurityInfo(hThreadDT, SE_WINDOW_OBJECT, LABEL_SECURITY_INFORMATION, NULL, NULL, NULL, &pSacl, &pSecurityDescriptor); if (dwResult == ERROR_SUCCESS) { if (pSacl != NULL) { dwResult = SetSecurityInfo(_T("test"), SE_WINDOW_OBJECT, LABEL_SECURITY_INFORMATION, NULL, NULL, NULL, pSacl); if (dwResult != ERROR_SUCCESS) _tprintf(_T("SetSecurityInfo(hNewDesktop) failed, error = %d"), dwResult); } LocalFree(pSecurityDescriptor); } else { _tprintf(_T("GetSecurityInfo(hDefaultDesktop) failed, error = %d"), dwResult); }

设置安全信息错误=6 我对Windows内核的C++编程很陌生。在过去的几个小时里,我一直在试图弄清楚这是怎么回事。所以基本上这是我的错误设置securityinfo(hNewDesktop)failed error=6。它通过了第一个循环,但是我无法为新桌面设置SecurityInfo HDESK dNew; BOOL closedesk; HANDLE hApp; HDESK hThreadDT = GetThreadDesktop(GetCurrentThreadId()); //Make a new desktop dNew = CreateDesktop(_T("test"), 0, 0, 0, DESKTOP_SWITCHDESKTOP| DESKTOP_WRITEOBJECTS| DESKTOP_READOBJECTS| DESKTOP_ENUMERATE| DESKTOP_CREATEWINDOW| DESKTOP_CREATEMENU, NULL); if(!dNew) { _tprintf(_T("Failed to create new desktop !!\n\n")); return 0; } PACL pSacl; PSECURITY_DESCRIPTOR pSecurityDescriptor; DWORD dwResult; dwResult = GetSecurityInfo(hThreadDT, SE_WINDOW_OBJECT, LABEL_SECURITY_INFORMATION, NULL, NULL, NULL, &pSacl, &pSecurityDescriptor); if (dwResult == ERROR_SUCCESS) { if (pSacl != NULL) { dwResult = SetSecurityInfo(_T("test"), SE_WINDOW_OBJECT, LABEL_SECURITY_INFORMATION, NULL, NULL, NULL, pSacl); if (dwResult != ERROR_SUCCESS) _tprintf(_T("SetSecurityInfo(hNewDesktop) failed, error = %d"), dwResult); } LocalFree(pSecurityDescriptor); } else { _tprintf(_T("GetSecurityInfo(hDefaultDesktop) failed, error = %d"), dwResult); },c++,windows,winapi,C++,Windows,Winapi,错误代码6是错误\u无效\u句柄。这是有意义的,因为您通过了\T(“test”),这是一个以null结尾的字符串,而不是桌面句柄。改为通过dNew 现在我得到error=5,这意味着访问被拒绝。我不明白我该如何让它工作?嗯,这是一个新的和不同的问题。这是错误\u访问被拒绝。不过你不需要我帮你查。它们都有文档记录:对于错误\访问\拒绝,我能做些什么?我不知道。那是另一个问题。我不知道你想要实现什么,背景是什么,等等。我刚刚回答了您提出的问题,该问题与导致错误\u无效\u句柄的代码有关。是的,我理解

错误代码6是
错误\u无效\u句柄
。这是有意义的,因为您通过了
\T(“test”)
,这是一个以null结尾的字符串,而不是桌面句柄。改为通过
dNew

现在我得到error=5,这意味着访问被拒绝。我不明白我该如何让它工作?嗯,这是一个新的和不同的问题。这是
错误\u访问被拒绝
。不过你不需要我帮你查。它们都有文档记录:对于错误\访问\拒绝,我能做些什么?我不知道。那是另一个问题。我不知道你想要实现什么,背景是什么,等等。我刚刚回答了您提出的问题,该问题与导致
错误\u无效\u句柄的代码有关。是的,我理解。干得好我应该打开另一个线程吗?或者你能补充一些建议吗?我真的很感谢你对dNew的帮助