引用COM中的COM+ 1.0 Admin Type Library 操纵COM+配置
using System; using System.Collections.Generic; using System.Text; using COMAdmin; namespace UpdateToolkit { /// <summary> /// COM+应用程序控制 /// </summary> public class clsComAppController { #region COM+属性字符串 /// <summary> /// COM+应用程序字符串 /// </summary> private const string c_APPLICATEIONS = "Applications"; /// <summary> /// COM+的激活属性字符串 /// </summary> private const string c_ACTIVATION = "Activation"; /// <summary> /// COM+的授权属性字符串 /// </summary> private const string c_APPLICATIONACCESSCHECKSENABLED = "ApplicationAccessChecksEnabled"; /// <summary> /// COM+的安全性级别属性字符串 /// </summary> private const string c_ACCESSCHECKSLEVEL = "AccessChecksLevel"; /// <summary> /// COM+的启用或禁用字符串 /// </summary> private const string c_ISENABLED = "IsEnabled"; #endregion #region 变量/属性 COMAdminCatalogClass _com = null; COMAdminCatalogCollection _apps = null; COMAdminCatalogObject _app = null; /// <summary> /// 是否找到COM+应用程序 /// </summary> private bool _blnIsFindComApp = false; /// <summary> /// COM+应用程序名 /// </summary> private string _name = string.Empty; /// <summary> /// 获取或设置COM+应用程序名 /// </summary> public string Name { set { _name = value; m_mthComApplicationInit(); } get { return _name; } } /// <summary> /// 禁用或启用COM+应用程序 /// </summary> public bool IsEnabled { set { if(_app != null) { _app.set_Value(c_ISENABLED, value); } } get { bool _isEnabled = false; if(_app != null) { _isEnabled = (bool)_app.get_Value(c_ISENABLED); } return _isEnabled; } } /// <summary> /// 安全性级别,是否只在进程级别进行访问检查,否则在进程级别和组件级别进行访问检查 /// </summary> public bool IsCheckedInProcOnly { set { if (_app != null) { _app.set_Value(c_ACCESSCHECKSLEVEL, value ? COMAdminAccessChecksLevelOptions.COMAdminAccessChecksApplicationLevel : COMAdminAccessChecksLevelOptions.COMAdminAccessChecksApplicationComponentLevel); } } get { bool _isCheckedInProcOnly = true; if(_app != null) { if((COMAdminAccessChecksLevelOptions)_app.get_Value(c_ACCESSCHECKSLEVEL) == COMAdminAccessChecksLevelOptions.COMAdminAccessChecksApplicationComponentLevel) { _isCheckedInProcOnly = false; } } return _isCheckedInProcOnly; } } /// <summary> /// 授权属性,是否强制进行访问检查 /// </summary> public bool IsApplicationAccessChecksEnabled { set { if (_app != null) { _app.set_Value(c_APPLICATIONACCESSCHECKSENABLED, value ? COMAdminAccessChecksLevelOptions.COMAdminAccessChecksApplicationComponentLevel : COMAdminAccessChecksLevelOptions.COMAdminAccessChecksApplicationLevel); } } get { bool _isApplicationAccessChecksEnabled = true; if (_app != null) { if ((COMAdminAccessChecksLevelOptions)_app.get_Value(c_ACCESSCHECKSLEVEL) == COMAdminAccessChecksLevelOptions.COMAdminAccessChecksApplicationComponentLevel) { _isApplicationAccessChecksEnabled = false; } } return _isApplicationAccessChecksEnabled; } } /// <summary> /// 是否在专用服务器中激活,否则库应用程序中激活 /// </summary> public bool IsActivedInServer { set { if (_app != null) { _app.set_Value(c_ACTIVATION, value ? COMAdminActivationOptions.COMAdminActivationLocal : COMAdminActivationOptions.COMAdminActivationInproc); } } get { bool _isIsActivedInServer = false; if (_app != null) { if ((COMAdminActivationOptions)_app.get_Value(c_ACTIVATION) == COMAdminActivationOptions.COMAdminActivationLocal) { _isIsActivedInServer = true; } } return _isIsActivedInServer; } } #endregion #region 构造器 /// <summary> /// 构造器 /// </summary> public clsComAppController() { _com = new COMAdminCatalogClass(); _apps = _com.GetCollection(c_APPLICATEIONS) as COMAdminCatalogCollection; if (_apps != null) { _apps.Populate(); } } #endregion #region 初始化COM+应用程序 /// <summary> /// 初始化COM+应用程序 /// </summary> private void m_mthComApplicationInit() { _blnIsFindComApp = false; if (_apps != null) { foreach (COMAdminCatalogObject objComApp in _apps) { if (objComApp.Name.ToString() == _name) { _app = objComApp; _blnIsFindComApp = true; break; } } } } #endregion #region 关闭COM+应用程序 /// <summary> /// 关闭COM+应用程序 /// </summary> public void m_mthShutDown() { if (_com != null && _blnIsFindComApp) { _com.ShutdownApplication(_name); } } #endregion #region 启用COM+应用程序 /// <summary> /// 启用COM+应用程序 /// </summary> public void m_mthStart() { if (_com != null && _blnIsFindComApp) { _com.StartApplication(_name); } } #endregion #region 刷新COM+应用程序 /// <summary> /// 刷新COM+应用程序 /// </summary> public void m_mthRefresh() { if (_apps != null && _blnIsFindComApp) { _apps.SaveChanges(); } } #endregion #region 释放资源 /// <summary> /// 释放资源 /// </summary> public void m_mthDispose() { if (_app != null) { _app = null; } if (_apps != null) { _apps = null; } if (_com != null) { _com = null; } } #endregion } }
浙公网安备 33010602011771号