用C#.NET  WinForm1. 如何做一个类似sql server 2000服务管理器的东东?
要求能通过sql server服务器的ip、端口、sa帐号密码来启动、停止远程的sql server就行了2. 如何在任何一部电脑上调用一下程序?(不可以用绝对路径)
通讯录
记事本
写字板
计算器
Microsoft Word
Microsoft Excel请热情帮忙,给出思路和部分示例代码,我会尽快结贴,谢谢!   ^_^

解决方案 »

  1.   

    还有ToolBar的Buttons不能和MainMenu的DropDownMenu绑定,只能和ContextMenu的DropDownMenu绑定。有什么办法使ToolBar的Buttons能和MainMenu的DropDownMenu绑定?先别让我用Command Pattern哦
      

  2.   

    第一个问题:
    使用sqldmo组件:
    第二个问题:
    .net提供了进程管理的类,
    ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.2052/cpref/html/frlrfsystemdiagnosticsprocessclasstopic.htm
    像word之类的可自动化对象,还可以使用自动化方式
      

  3.   

    To first question, I think you can write a program with System.Serviceprocess. there are some samples in MSDN.
    http://www.c-sharpcorner.com/Code/2002/May/WinServiceAdmin.aspto second question: you can use interop for word and excel to call winword.exe and excel.
    ms-help://MS.VSCC.2003/MS.MSDNQTR.2005JAN.1033/cssample/html/vcsamWordAutomationSampleDemonstratesAutomatingMicrosoftWord.htm
      

  4.   

    1,sqldmo或WMI可以关闭或启动远程的服务器SQL服务;
    2,用Process.Start方法可启动这些程序,但最好放在Try语句块中
    会自动在SystemBoot\Windows目录下找:
    Process.Start("notepad");//记事本
    Process.Start("calc");//计算器
    Process.Start("C:\Program Files\Windows NT\Accessories\wordpad.exe");//写字板
    Process.Start("C:\Program Files\Outlook Express\wab.exe");//通讯录
    //......
      

  5.   

    用这些方法怎么做呢?sqldmo或WMI可以关闭或启动远程的服务器SQL服务;????
    能不能给个例子啊?
      

  6.   

    关于解决绝对路径的问题,参考:ms-help://MS.MSDNQTR.2003FEB.2052/cpref/html/frlrfSystemEnvironmentSpecialFolderClassTopic.htm
      

  7.   

    ms-help://MS.MSDNQTR.2003FEB.2052/sqldmo/dmoref_m_s_86g4.htm //停止sqlserver
    ms-help://MS.MSDNQTR.2003FEB.2052/sqldmo/dmoref_m_s_7vg2.htm //启动sqlserver
      

  8.   

    手里没有现成代码,抄别人的,启动word
    using System;
    using System.Drawing;
    using System.Collections;
    using System.ComponentModel;
    using System.Windows.Forms;
    using System.Data;namespace WindowsApplication1
    {
    /// <summary>
    /// Form1 的摘要说明。
    /// </summary>
    public class Form1 : System.Windows.Forms.Form
    {
    private System.Windows.Forms.Button button1;
    /// <summary>
    /// 必需的设计器变量。
    /// </summary>
    private System.ComponentModel.Container components = null; public Form1()
    {
    //
    // Windows 窗体设计器支持所必需的
    //
    InitializeComponent(); //
    // TODO: 在 InitializeComponent 调用后添加任何构造函数代码
    //
    } /// <summary>
    /// 清理所有正在使用的资源。
    /// </summary>
    protected override void Dispose( bool disposing )
    {
    if( disposing )
    {
    if (components != null) 
    {
    components.Dispose();
    }
    }
    base.Dispose( disposing );
    } #region Windows Form Designer generated code
    /// <summary>
    /// 设计器支持所需的方法 - 不要使用代码编辑器修改
    /// 此方法的内容。
    /// </summary>
    private void InitializeComponent()
    {
    this.button1 = new System.Windows.Forms.Button();
    this.SuspendLayout();
    // 
    // button1
    // 
    this.button1.Location = new System.Drawing.Point(120, 200);
    this.button1.Name = "button1";
    this.button1.TabIndex = 0;
    this.button1.Text = "button1";
    this.button1.Click += new System.EventHandler(this.button1_Click);
    // 
    // Form1
    // 
    this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
    this.ClientSize = new System.Drawing.Size(292, 273);
    this.Controls.AddRange(new System.Windows.Forms.Control[] {
      this.button1});
    this.Name = "Form1";
    this.Text = "Form1";
    this.ResumeLayout(false); }
    #endregion /// <summary>
    /// 应用程序的主入口点。
    /// </summary>
    [STAThread]
    static void Main() 
    {
    Application.Run(new Form1());
    } private void button1_Click(object sender, System.EventArgs e)
    {
    string title="黄海学习的C# word生成文档";
    object titleLengh=title.Length; //得到长度是不是因为想要居中,算出位置?
    string first="\n    公司最近需要利用C#对项目进行编程,其"+   // \n可能表示空出二个空格来
    "中存在一个功能就是可自动生成WORD文档,但一直以来都"+
    "找不到什么好办法,无奈之下,只有自已学着写一个了.第一次写WORD的东东,写的不好请大家不要见笑,对了张虹波老师今天怎么样了呢?我不知道!";
    string second="\n    如果能真正生成WORD文档的好处有:";
    string third="\n1、根据数据库信息自动生成文档;";
    string forth="\n2、免去书写文档之苦;";
    string fifth="\n3、可以通过邮件方式传出文档。";
    object missing;
    object zero=0;

    Word.ApplicationClass wa=new Word.ApplicationClass();
    missing=System.Reflection.Missing.Value;
    wa.Visible=true;

    wa.Documents.Add(ref missing,ref missing,ref missing,ref missing);

                 
    Word.Range myRange=wa.ActiveDocument.Range(ref zero,ref zero);
    object r=myRange;
    Word.Paragraph p=wa.ActiveDocument.Paragraphs.Add(ref r);
    p.Range.InsertBefore(title);

    Word.Range titleRange=wa.ActiveDocument.Range(ref zero,ref titleLengh);
    titleRange.Font.Size=24;
    titleRange.Font.Name="隶书";
    titleRange.Font.Color=Word.WdColor.wdColorBlue;
    titleRange.Paragraphs.Alignment=Word.WdParagraphAlignment.wdAlignParagraphCenter;//对齐到中间
    Word.Range firstR=wa.ActiveDocument.Paragraphs.Item(2).Range;
    r=firstR;
    p=wa.ActiveDocument.Paragraphs.Add(ref r);
    firstR.Font.Size=12;
    firstR.Paragraphs.Alignment=Word.WdParagraphAlignment.wdAlignParagraphJustify;



    firstR.InsertAfter(first);
    //firstR.InsertParagraphAfter();
         firstR.InsertAfter(second);
    firstR.InsertAfter(third);
    firstR.InsertAfter(forth);
    firstR.InsertAfter(fifth);
    }
    }
    }
      

  9.   

    using System;
    using System.IO;//==============================================================================
    //用途 :  管理数据库服务器(比如列了局域网内所有数据库服务器名称等)
    //         因为使用了sqdmo,所以分发到客户端时必须加入下列文件
    //         Sqldmo.dll
    //         Sqldmo.rll(必须初放置在c:\Winnt\System32\Resources\1033中)
    //         Sqlsvc.dll
    //         Sqlsvc.rll
    //         Sqlwoa.dll
    //         Sqlresld.dll
    //         Sqlwid.dll
    //         W95scm.dll
    //         如果客户端安装sql客户端工具或者程序运行在安装有
    //         sql server2000sp2以上的服务器端,则不用作处理可直接运行
    //=============================================================================
    namespace micromouse.ClassLibrary
    {
    /// <summary>
    /// SQLServer数据库管理
    /// </summary>
    public class SQLServer
    {
    public SQLServer()
    {
    } /// <summary>
    /// 获得局域网内所有SQL服务器名称(不一定准确)
    /// </summary>
    /// <returns>当前局域网所有服务器名</returns>
    static public string[] GetAllServerName()
    {
    SQLDMO.Application application=new SQLDMO.ApplicationClass(); //Application对象
    SQLDMO.NameList namelServers; //包括所有服务器的NameList集合对象
    string[] astrServerNames; //返回所有服务器名 try
    {
    //获得所有服务器
    namelServers=application.ListAvailableSQLServers();
    //重新初始化数组名大小以存储所有服务器名
    astrServerNames=new string[namelServers.Count]; //填充所有服务器名到服务器名数组中
    for(int intIndex=0;intIndex<=namelServers.Count-1;intIndex++)
    {
    //NameList集合对象的索引从1开始
    astrServerNames[intIndex]=namelServers.Item(intIndex+1);
    } //返回服务器名数组
    return astrServerNames;
    }
    catch(Exception ex)
    {
    //发生错误,抛出异常
    throw ex;
    }
    } /// <summary>
    /// 获取指定服务器的状态
    /// </summary>
    /// <param name="strServerName">要获取状态的服务器名</param>
    /// <returns>SQL服务器的状态</returns>
    static public SQLDMO.SQLDMO_SVCSTATUS_TYPE GetServerStatus(string strServerName)
    {
    //SQLServer对象,代表一个SQL服务器
    SQLDMO.SQLServer sqlserver=new SQLDMO.SQLServerClass(); //设置想要获得状态的服务器
    sqlserver.Name=strServerName; try
    {
    //返回指定服务器状态
    return sqlserver.Status;
    }
    catch
    {
    //发生错误,返回未知状态
    return SQLDMO.SQLDMO_SVCSTATUS_TYPE.SQLDMOSvc_Unknown;
    } } /// <summary>
    /// 开始SQL服务
    /// </summary>
    /// <param name="strServerName">要启动服务的服务器名(使用NT验证)</param>
    /// <returns>服务是否成功启动</returns>
    static public bool StartServerService(string strServerName)
    {
    //SQLServer对象,代表一个SQL服务器
    SQLDMO.SQLServer sqlserver=new SQLDMO.SQLServerClass(); try
    {
    //启用NT验证
    sqlserver.LoginSecure=true; //启动服务
    //false:如果SQL服务正在运行则不启动服务; 
    //true: 如果SQL服务正在运行也启动服务
    sqlserver.Start(false,strServerName,string.Empty,string.Empty); //返回启动成功
    return true;
    }
    catch(Exception ex)
    {
    throw ex; //抛出异常
    }
    } /// <summary>
    /// 启动SQL服务(使用SQL自身安全验证)
    /// </summary>
    /// <param name="strServerName">服务器名</param>
    /// <param name="strLoginName">用户名</param>
    /// <param name="strLoginPassword">密码</param>
    /// <returns>是否成功启动</returns>
    static public bool StartServerService(string strServerName,string strLoginName,string strLoginPassword)
    {
    //SQLServer对象,代表一个SQL服务器
    SQLDMO.SQLServer sqlserver=new SQLDMO.SQLServerClass(); try
    {
    //启动服务
    sqlserver.Start(false,strServerName,strLoginName,strLoginPassword); //返回启动成功
    return true;
    }
    catch(Exception ex)
    {
    throw ex; //抛出异常
    }
    } /// <summary>
    /// 停止SQL服务
    /// </summary>
    /// <param name="strServerName">要停止服务的服务器名(使用NT验证)</param>
    /// <returns>服务是否已经停止</returns>
    static public bool StopServerService(string strServerName)
    {
    //SQLServer对象,代表一个SQL服务器
    SQLDMO.SQLServer sqlserver=new SQLDMO.SQLServerClass(); try
    {
    //设置服务器名
    sqlserver.Name=strServerName;
    //停止服务(停止服务不需要验证)
    sqlserver.Stop(); //返回停止服务成功
    return true;
    }
    catch(Exception ex)
    {
    throw ex; //抛出异常
    }
    } /// <summary>
    /// 连接到一个SQL服务器并返回一个SQLServer对象
    /// </summary>
    /// <param name="strServerName">服务器名(使用NT集成验证方式)</param>
    /// <returns>已连接到的SQLServer对象</returns>
    static public SQLDMO.SQLServer ConnectServer(string strServerName)
    {
    //SQLServer对象,代表一个SQL服务器
    SQLDMO.SQLServer sqlserver=new SQLDMO.SQLServerClass(); try
    {
    //启用NT集成验证试
    sqlserver.LoginSecure=true;
    //连接到SQL服务器
    sqlserver.Connect(strServerName,string.Empty,string.Empty); //返回已连接的sqlserver对象
    return sqlserver;
    }
    catch(Exception ex)
    {
    throw ex; //抛出异常
    }
    } /// <summary>
    /// 连接到一个SQL服务器并返回一个SQLServer对象
    /// </summary>
    /// <param name="strServerName">服务器名</param>
    /// <param name="strLoginName">用户名</param>
    /// <param name="strLoginPassword">密码</param>
    /// <returns>已连接的SQL服务器对象</returns>
    static public SQLDMO.SQLServer ConnectServer(string strServerName,
    string strLoginName,string strLoginPassword)
    {
    //SQLServer对象,代表一个SQL服务器
    SQLDMO.SQLServer sqlserver=new SQLDMO.SQLServerClass(); try
    {
    //启用SQL验证
    sqlserver.LoginSecure=false;
    //连接到SQL服务器
    sqlserver.Connect(strServerName,strLoginName,strLoginPassword); //返回已连接的sqlserver对象
    return sqlserver;
    }
    catch(Exception ex)
    {
    throw ex; //抛出异常
    }
    } /// <summary>
    /// 备份数据库
    /// </summary>
    /// <param name="sqlserver">执行备份的服务器</param>
    /// <param name="strDatabaseName">要备份的数据库名</param>
    /// <param name="strBackupFileName">备份后的文件名</param>
    /// <param name="PercentComplete">完成百分比委托</param>
    /// <returns>是否成功备份</returns>
    static public bool BackupDataBase(SQLDMO.SQLServer sqlserver,
    string strDatabaseName,string strBackupFileName,
    SQLDMO.BackupSink_PercentCompleteEventHandler PercentComplete)
    {
    //Backup对象,代表一次备份操作
    SQLDMO.Backup backup=new SQLDMO.BackupClass(); try
    {
    backup.PercentComplete+=PercentComplete; //完成百分比委托
    backup.Database=strDatabaseName; //执行备份的数据库名
    backup.Files=strBackupFileName; //备分后的文件名
    backup.SQLBackup(sqlserver); //开始备份 //没有发生错误,返回备份成功
    return true;
    }
    catch(Exception ex)
    {
    throw ex; //设置异常
    }
    } /// <summary>
    /// 恢复备份的数据库
    /// </summary>
    /// <param name="sqlserver">执行恢复请求的服务器</param>
    /// <param name="strDatabaseName">接收恢复的数据库名</param>
    /// <param name="strRestoreFileName">提供恢复数据的文件名</param>
    /// <param name="PercentComplete">完成百分比委托</param>
    /// <returns>是否成功恢复</returns>
    static public bool RestoreDataBase(SQLDMO.SQLServer sqlserver,
    string strDatabaseName,string strRestoreFileName,
    SQLDMO.RestoreSink_PercentCompleteEventHandler PercentComplete)
    {
    //Restore对象,代表一次恢复操作
    SQLDMO.Restore restore=new SQLDMO.RestoreClass(); try
    {
    restore.PercentComplete+=PercentComplete; //完成百分比委托
    restore.Database=strDatabaseName; //接收恢复的数据库名
    restore.Files=strRestoreFileName; //提供恢复数据的文件名
    restore.SQLRestore(sqlserver); //开始恢复 //没有发生错误,返回成功恢复
    return true;
    }
    catch(Exception ex)
    {
    throw ex; //设置异常
    }
    }
      

  10.   

    /// <summary>
    /// 附加数据库到SQL服务器
    /// </summary>
    /// <param name="sqlserver">SQL服务器</param>
    /// <param name="strDatabaseName">数据库名</param>
    /// <param name="strFileName">提供数据库物理文件的文件名</param>
    /// <returns>是否成功附加</returns>
    static public bool ExecuteAttachDatabase(SQLDMO.SQLServer sqlserver,
    string strDatabaseName,string strFileName)
    {
    try
    {
    //附加数据库
    sqlserver.AttachDBWithSingleFile(strDatabaseName,strFileName); //没有发生错误,附加成功
    return true;
    }
    catch(Exception ex)
    {
    throw ex; //抛出异常
    } } /// <summary>
    /// 在服务器上建立数据库
    /// </summary>
    /// <param name="sqlserver">在其上建立数据库的服务器</param>
    /// <param name="strDatabaseName">要建的数据库的数据库名</param>
    /// <returns>是否成功建立</returns>
    static public bool CreateDatabase(SQLDMO.SQLServer sqlserver,string strDatabaseName)
    {
    //返回是否执行成功
    return ExecuteTransactionSQLCommand(
    sqlserver, "Create Database " + strDatabaseName);
    } /// <summary>
    /// 删除数据库
    /// </summary>
    /// <param name="sqlserver">SQL服务器</param>
    /// <param name="strDatabaseName">数据库名</param>
    /// <returns>是否已删除数据库</returns>
    static public bool DeleteDatabase(SQLDMO.SQLServer sqlserver,string strDatabaseName)
    {
    //返回是否成功删除
    return ExecuteTransactionSQLCommand(
    sqlserver, "Drop Database " + strDatabaseName);
    } /// <summary>
    /// 执行SQL脚本文件
    /// </summary>
    /// <param name="sqlserver">SQL服务器</param>
    /// <param name="strDatabaseName">数据库名</param>
    /// <param name="strSQLScriptFileName">脚本文件名</param>
    /// <returns>是否成功执行</returns>
    static public bool ExecuteSQLScriptFile(SQLDMO.SQLServer sqlserver,
    string strDatabaseName,string strSQLScriptFileName)
    {
    //脚本文件内容
    string strScriptFileContent; //获得脚本文件内容
    try
    {
    //StreamReader对象,用以读取脚本文件内容
    StreamReader srScriptFile=new StreamReader(strSQLScriptFileName); //将读取的内容存储到strScriptFileContent变量中
    strScriptFileContent=srScriptFile.ReadToEnd(); //关闭流
    srScriptFile.Close();
    }
    catch(IOException iex)
    {
    throw new Exception(iex.Message); //设置异常
    }
    catch(Exception ex)
    {
    throw ex; //设置异常
    } //执行SQL文件内容
    return ExecuteTransactionSQLCommand(sqlserver,strScriptFileContent);

    } /// <summary>
    /// 获得SQL数据文件路径
    /// </summary>
    /// <param name="sqlserver">SQL服务器</param>
    /// <returns>SQL数据文件路径</returns>
    static public string GetSQLDataPath(SQLDMO.SQLServer sqlserver)
    {
    //返回默认数据库文件路径
    return sqlserver.Registry.SQLDataRoot;
    } /// <summary>
    /// 获得SQL应用程序文件路径
    /// </summary>
    /// <param name="sqlserver">SQL服务器</param>
    /// <returns>SQL应用程序文件路径</returns>
    static public string GetSQLRootPath(SQLDMO.SQLServer sqlserver)
    {
    //返回应用程序文件夹
    return sqlserver.Registry.SQLRootPath;
    } /// <summary>
    /// 执行TransactSQL语句
    /// </summary>
    /// <param name="sqlserver">SQL服务器</param>
    /// <param name="strTransactionSQLCommand">TransactSQL语句</param>
    /// <returns>是否成功执行</returns>
    static public bool ExecuteTransactionSQLCommand(
    SQLDMO.SQLServer sqlserver,string strTransactionSQLCommand)
    {
    try
    {
    //执行TransactSQL语句
    sqlserver.ExecuteImmediate(strTransactionSQLCommand,
    SQLDMO.SQLDMO_EXEC_TYPE.SQLDMOExec_Default,
    strTransactionSQLCommand.Length); //返回执行成功
    return true;
    }
    catch(Exception ex)
    {
    throw ex; //设置异常
    }
    }
    }
    }