o任飘零o

别人给了你一滴水,你给了别人些什么?
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

COM+应用程序组件服务控制

Posted on 2013-02-04 14:15  o任飘零o  阅读(420)  评论(0)    收藏  举报

引用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
     }
 }