- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在 Microsoft Windows 7 中执行 Qt 4.8.1 时出现以下问题:
QLocalServer(命名管道)正在等待客户端连接,并且它作为以管理权限(例如系统服务)运行的服务器应用程序运行。
如何允许非特权 QLocalSocket 客户端连接到该服务器?连接尝试始终被拒绝,错误代码为 3 (QLocalSocket::SocketAccessError)。有解决办法吗?
编辑:正如我所发现的,解决方案是通过允许对“Everyone”Sid 的完全访问来更改管道安全性。这里唯一的问题是,对 SetSecurityInfo
的调用总是失败,并出现“访问被拒绝”错误。首先我们必须获得一个管道句柄。由于管道已经由 Qt 创建,我们将使用 CreateNamedPipe
打开它。
HANDLE hPipe = CreateNamedPipe(
(const wchar_t *)_Server->fullServerName().utf16(), // pipe name
PIPE_ACCESS_DUPLEX | FILE_FLAG_OVERLAPPED, // read/write access
PIPE_TYPE_BYTE | // byte type pipe
PIPE_READMODE_BYTE | // byte-read mode
PIPE_WAIT, // blocking mode
PIPE_UNLIMITED_INSTANCES, // max. instances
0, // output buffer size
0, // input buffer size
3000, // client time-out
0 // Default Security
);
// Same call to open/create pipe as in qlocalserver_win.cpp
// Code here to add/change ACEs
if (SetSecurityInfo(hPipe, SE_KERNEL_OBJECT, DACL_SECURITY_INFORMATION,
0, 0, NewAcl, 0) == ERROR_SUCCESS) {
// Success
}
即使NewAcl
设置为 NULL,调用也会失败。那么什么可能导致“访问被拒绝”错误呢?
最佳答案
我知道,现在有点晚了,但这可能会帮助其他遇到同样问题的人。请注意,只有当服务器是您的应用程序时,此解决方案才有效。
如果是这种情况,只需调用 server.setSocketOptions(QLocalServer::WorldAccessOption);
或 QLocalServer::SocketOption
的其他值之一在您调用 listen
之前.
关于qt - 如果服务器以管理权限运行,则 QLocalSocket::connectToServer 失败并出现 QLocalSocket::SocketAccessError (Windows 7),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10719487/
tyrus websockets ClientManager connectToServer“未收到握手响应” 如何在不创建越来越多的守护进程、Grizzly-kernel 和 Grizzly-wor
本文整理了Java中org.apache.tomcat.websocket.WsWebSocketContainer.connectToServer()方法的一些代码示例,展示了WsWebSocket
在 Microsoft Windows 7 中执行 Qt 4.8.1 时出现以下问题: QLocalServer(命名管道)正在等待客户端连接,并且它作为以管理权限(例如系统服务)运行的服务器应用程序
我是一名优秀的程序员,十分优秀!