You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C# .NET 4.5全局Mutex未授权访问异常:非管理员运行报错

解决C# .NET 4.5下Global Mutex的UnauthorizedAccessException问题

我之前也碰到过几乎一模一样的问题!明明设置了Everyone可访问的Global Mutex,但非管理员进程一访问就触发权限异常,只有管理员运行才能正常工作。后来排查下来,大概率是第一个创建Mutex的进程没有正确配置权限规则——哪怕你觉得代码看起来没问题,可能也有细节没注意到。

核心问题:权限规则的配置细节

很多人会给Everyone设置权限,但容易漏掉关键的Mutex权限类型。要让非管理员进程能正常同步和操作Mutex,需要授予MutexRights.Synchronize和MutexRights.Modify权限,而不是随便给个读取或者完全控制。

正确的Mutex创建代码示例

下面是经过验证的、能让所有用户(包括非管理员)访问Global Mutex的代码:

using System.Security.AccessControl;
using System.Security.Principal;
using System.Threading;

public class MutexHelper
{
    public static Mutex CreateGlobalSharedMutex(string mutexName)
    {
        bool createdNew;
        var mutexSecurity = new MutexSecurity();
        
        // 获取Everyone的安全标识符
        var everyoneSid = new SecurityIdentifier(WellKnownSidType.WorldSid, null);
        
        // 添加权限规则:允许Everyone同步和修改Mutex
        var accessRule = new MutexAccessRule(
            everyoneSid,
            MutexRights.Synchronize | MutexRights.Modify,
            AccessControlType.Allow);
        
        mutexSecurity.AddAccessRule(accessRule);
        
        // 创建Global Mutex,传入配置好的安全规则
        return new Mutex(false, $"Global\\{mutexName}", out createdNew, mutexSecurity);
    }
}

关键注意事项

  • 必须由第一个进程正确初始化权限:如果第一个创建Mutex的进程没设置mutexSecurity,系统会用默认权限(仅管理员组可访问),后续哪怕你再传正确的权限也没用,因为Mutex已经存在了。
  • 验证实际权限:可以用Process Explorer工具检查已创建的Mutex权限:
    1. 打开Process Explorer,按Ctrl+F搜索你的Mutex名称(比如Global\MySharedMutex)
    2. 找到对应的Mutex后右键选择「Properties」,切换到「Security」标签页
    3. 确认Everyone用户组是否有「Synchronize」和「Modify」的允许权限
  • 打开已存在的Mutex时也要注意权限:如果是第二个进程打开已存在的Mutex,确保请求的权限和你设置的一致,比如:
    var mutex = Mutex.OpenExisting($"Global\\{mutexName}", MutexRights.Synchronize | MutexRights.Modify);
    

为什么管理员运行能解决?

当进程以管理员权限运行时,它会自动获得更高的系统权限,哪怕Mutex的权限配置有问题,管理员进程也能绕过限制访问资源。但这只是临时 workaround,根本解决还是要把Mutex的权限配置正确。

内容的提问来源于stack exchange,提问作者Jayden

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 10:04:51