我无法创建新的Window Station来运行我的应用程序
int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
wprintf(L"SetProcessWindowStation() before: %x\n", GetProcessWindowStation());
HWINSTA winSta = CreateWindowStation(_T("hiddenWinSta"), 0, 0, NULL);
if (winSta == NULL)
{
wprintf(L"CreateWindowStation() failed, error %d!\n", GetLastError());
}else
wprintf(L"CreateWindowStation() is OK!\n");
SetProcessWindowStation(winSta);
OpenDesktop(L"default", 0, FALSE, READ_CONTROL | WRITE_DAC | DESKTOP_WRITEOBJECTS | DESKTOP_READOBJECTS);
wprintf(L"SetProcessWindowStation() after: %x\n", GetProcessWindowStation());
system("pause");
return 0;
}
我可以制作新的Windows工作站的屏幕截图,不是winsta0和桌面默认吗?请帮帮我:(
输出
SetProcessWindowStation() before: 30
CreateWindowStation() failed, error 5!
SetProcessWindowStation() after: 30
Press any key to continue . . .
答案 0 :(得分:5)
错误5是ERROR_ACCESS_DENIED
lpwinsta [in, optional]
要创建的窗口站的名称。窗口站名称是 不区分大小写且不能包含反斜杠字符
\
。 只允许Administrators组的成员指定名称。 如果lpwinsta
为NULL
或为空字符串,则系统会形成一个窗口站 使用调用进程的登录会话标识符命名。要获取此名称,请调用GetUserObjectInformation
函数。
所以要么以管理员身份启动程序,要么不指定名称。