允许远程桌面用户访问全局Windows互斥体

uqdfh47h  于 2023-10-22  发布在  Windows
关注(0)|答案(1)|浏览(113)

我的环境:

  • 安装了远程桌面服务的Windows Server 2012 R2
  • 用C编程

问题:

  • 用户U1通过RDP连接到Windows Server并创建一个全局互斥(带有Global\前缀的互斥)
  • 用户U1使用以下权限创建全局Windows互斥锁:
  • 创造者
  • 系统
  • 管理员
  • 用户U2通过RDP连接到Windows Server,并尝试获取全局互斥体的句柄
  • U2由于缺乏访问权限而失败(因为U2不是管理员,不是系统,也不是创建者)
  • 收到“拒绝访问”

我试图解决这个问题,增加了一个权限,这是为当前的AD域用户和它的工作。
这个解决方案是否足够安全?换句话说,授予访问权限以允许多RDP用户访问互斥体的正确方法是什么?
谢谢你

baubqpgj

baubqpgj1#

我用这段代码实现了远程桌面和互斥。MutexSecurity是访问其他RDP会话上已打开的互斥体所必需的。

var mSec = new System.Security.AccessControl.MutexSecurity();

        // Add a rule that grants the current user the 
        // right to enter or release the mutex.
        System.Security.Principal.SecurityIdentifier everyone = new System.Security.Principal.SecurityIdentifier(System.Security.Principal.WellKnownSidType.WorldSid, null);

        var rule = new System.Security.AccessControl.MutexAccessRule(everyone,
            System.Security.AccessControl.MutexRights.Synchronize | System.Security.AccessControl.MutexRights.Modify,
            System.Security.AccessControl.AccessControlType.Allow);
        mSec.AddAccessRule(rule);

        // Add a rule that denies the current user the 
        // right to change permissions on the mutex.
        rule = new System.Security.AccessControl.MutexAccessRule(everyone,
            System.Security.AccessControl.MutexRights.ChangePermissions,
            System.Security.AccessControl.AccessControlType.Deny);
        mSec.AddAccessRule(rule);

        using (var mutex = new System.Threading.Mutex(false, $"Global\\AnDietzeMutex", out bool createdNew, mSec)); {
        }

相关问题