将权限设置为在多个台式机上广播消息
Setting permissions to broadcast messages across multiple desktops
嗨,
我正在尝试在不同台式机上的应用程序之间发送消息。为了实现此目的,我使用BSM_ALLDESKTOPS
set for LPDWORD lpdwRecipients
参数使用了广播节目。
正如MSDN文档所说,BSM_ALLDESKTOPS
- 向所有桌面广播。需要SE_TCB_NAME特权。
为了满足此要求,我找到了以下示例,该示例在最后一个if语句中生成ERROR_NOT_ALL_ASSIGNED
,带有代码1300 - Not all privileges or groups referenced are assigned to the caller
:
BOOL GrantPrivilege::SetPrivilege(HANDLE hToken, LPCTSTR lpszPrivilege, BOOL bEnablePrivilege)
{
TOKEN_PRIVILEGES tp;
LUID luid;
if (!LookupPrivilegeValue(NULL, lpszPrivilege, &luid))
{
printf("LookupPrivilegeValue error: %un", GetLastError());
return FALSE;
}
tp.PrivilegeCount = 1;
tp.Privileges[0].Luid = luid;
if (bEnablePrivilege)
tp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
else
tp.Privileges[0].Attributes = 0;
// Enable the privilege or disable all privileges.
if (!AdjustTokenPrivileges(
hToken,
FALSE,
&tp,
sizeof(TOKEN_PRIVILEGES),
(PTOKEN_PRIVILEGES)NULL,
(PDWORD)NULL))
{
printf("AdjustTokenPrivileges error: %un", GetLastError());
return FALSE;
}
if (GetLastError() == ERROR_NOT_ALL_ASSIGNED)
{
printf("The token does not have the specified privilege. %un ", GetLastError());
return FALSE;
}
return TRUE;
}
也许错误是由我呼吁此功能的方式引起的:
HANDLE hToken;
if (!OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken))
printf("%u", GetLastError());
GrantPrivilege gPriv;
gPriv.SetPrivilege(hToken, L"SeTcbPrivilege", true);
p.s。我尝试从高架提示符运行此应用程序,但结果是相同的,1300
错误代码。
此错误代码意味着不允许当前的Windows用户使用此特权(这就是为什么这些是特权的原因,毕竟:不是每个人都有它们)。可以授予用户这样的特权,但是我强烈建议您反对。相反,您应该使用其他一些形式的过程间通信。如果您只需要没有数据的信号,则命名事件应该很好。否则,它可以是命名的管道,套接字或共享内存部分。
相关文章:
- 其中降频广播实际上是有用的
- boost::asio UDP 广播客户端仅接收"fast"数据包
- NodeJs 服务器充斥着 UDP 广播,不发送响应
- 在具有 MPI 的超立方体中广播
- 为什么不允许这种交叉广播?
- c++ MPI 广播向量
- 为什么在template函数广播中把两个extensor表达式加在一起不正确
- 特征中的稀疏矩阵和向量加法广播
- 如何在INET的应用层中发送广播数据包
- 特征张量广播语法
- 我需要帮助理解GetIpAddrTable和接口广播地址
- C++ UDP 广播使用 ::write
- 如何将 Eigen::Tensor 广播到更高维度?
- Twitch的RTMP广播数据包体结构
- LAN 上的计算机不会始终使用 boost::asio C++接收到 255.255.255.255 的 UDP 广播
- 在本征C++中广播(两个)向量
- 广播__M128矢量的一个任意元素
- UDP 客户端不会在 esp32 上广播消息
- 如何使用Boost Asio接收到255.255.255.255的UDP广播
- mpi_bcast,将阵列缓冲区广播到接收缓冲区中的特定位置