全局命名空间也可以用在检测一个使用了命名对象的应用是否已经启动,检测的范围包括所有的会话。命名对象必须在全局命名空间中创建或者打开,不能是单个会话空间。The more common case of running the application once per session is supported by default because the named object is created in a per session namespace.除了"Global\"前缀,客户端进程可以用"Local\”前缀在会话空间中几餐对象。关键字大小写敏感。
分析2)
ERROR_ALREADY_EXISTS == GetLastError()
这个错误是在同一个会话中会出现这个错误,同一个会话是指同样的方式启动,在同一个登陆用户以控制台或者服务启动
ERROR_ACCESS_DENIED == GetLastError()
这个错误是在一个进程实例以服务的形式启动,一个进程实例以控制台的形式启动,就会返回这个错误
https://docs.microsoft.com/zh-cn/windows/desktop/api/synchapi/nf-synchapi-createmutexa
CreateMutexA说明