【问题标题】:Application fails creating a windows station with CreateWindowStation应用程序无法使用 CreateWindowStation 创建 Windows 站
【发布时间】:2019-02-10 21:29:21
【问题描述】:

我无法创建新的 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;
}

我可以制作一个不是winsta0和桌面默认的windows station的截图吗?请帮帮我:(


输出

SetProcessWindowStation() before: 30
CreateWindowStation() failed, error 5!
SetProcessWindowStation() after: 30
Press any key to continue . . .

【问题讨论】:

  • 这是以管理员身份运行的吗?查看文档,只允许管理员指定名称。不过,看起来您仍然可以解决这个问题。

标签: c++ windows


【解决方案1】:

错误 5 是 ERROR_ACCESS_DENIED

来自CreateWindowStation

lpwinsta [in, optional]

要创建的窗口站的名称。窗口站名称是 不区分大小写且不能包含反斜杠字符\。 只有管​​理员组的成员才能指定名称。 如果lpwinstaNULL或空字符串,则系统形成窗口站 名称使用调用进程的登录会话标识符。要获取此名称,请调用GetUserObjectInformation 函数。

所以要么以管理员身份启动你的程序,要么不指定名称。

【讨论】:

    猜你喜欢
    • 2017-11-06
    • 1970-01-01
    • 2019-05-29
    • 1970-01-01
    • 2014-08-15
    • 1970-01-01
    • 1970-01-01
    • 2016-08-30
    • 1970-01-01
    相关资源
    最近更新 更多