在 .net 中利用 System.EnterpriseServices 命名空间可以很方便的创建支持事务处理的应用程序。而事务处理是需要系统服务中的 Distributed Transaction Coordinator(DTC) 服务来支持的。如果这个服务没有被启动或者没有正常运行,调用 System.EnterpriseServices 命名空间中的方法就可能出现异常。比如,调用 ServiceDomain.Enter 方法时会出现异常:System.Runtime.InteropServices.COMException : 事务管理器不可用。
一般来说,DTC 服务需要运行在 NT Authority\Network Service 帐号下。否则,也可能出现异常。如果此服务已经运行在别的帐号下,要改成 NT Authority\Network Service,你可以:
- 点击“开始”,“运行”,键入“services.msc”
 - 在“服务”mmc 中找到 Distributed Transaction Coordinator
 - 右键点击Distributed Transaction Coordinator,在菜单中选择“属性”,在“登录”中选择“此帐户”,帐户输入“NT Authority\Network Service”,密码为空
 
此时,如果仍然不能正常调用 ServiceDomain.Enter,你可能需要:
- 点击“开始”,“运行”,键入“msdtc -resetlog”
 - 重新启动系统
 
另外需要注意的是,%systemroot%/system32 目录下的文件一般不要设置成只读。因为有很多系统服务是需要拥有此目录下一些文件的写权限的。否则很可能一些服务不能被启动或者正常运行。比如,Event Log 服务。
                    
                
                
            
        
浙公网安备 33010602011771号