最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

c#開發(fā)的程序安裝時(shí)動(dòng)態(tài)指定windows服務(wù)名稱

 更新時(shí)間:2012年06月09日 00:19:19   作者:  
前段時(shí)間由于項(xiàng)目的需求,要在Windows里把同樣的組件制作成多個(gè)不同名稱的服務(wù),這些服務(wù)完成類似的功能,僅需要修改業(yè)務(wù)配置文件
這下可把我難住了,難道要 在開發(fā)的代碼中一個(gè)一個(gè)地設(shè)置想要的名稱,然后重新編譯,再注冊成服務(wù)?
但是如果將來又要換個(gè)名稱呢?再重新設(shè)置、 編譯、注冊一遍?這樣操作太麻煩了!
于是我就想能不能通過在安裝的時(shí)候進(jìn)行配置,比如加一個(gè)xml文件記錄要安裝的服務(wù)的服務(wù)名等信息,每次安裝前修改該xml文件就可以了。
操作:
1、首先添加一個(gè)配置文件到服務(wù)主程序的根目錄,取名“ServiceSetting.xml”:
復(fù)制代碼 代碼如下:

<?xml version="1.0" encoding="utf-8" ?>
<Settings>
<ServiceName>testme</ServiceName>
<DisplayName>testmedisplay</DisplayName>
<Description>這里僅僅是個(gè)測試而已</Description>
</Settings>

2、然后添加一個(gè)類文件到服務(wù)主程序的根目錄,取名"SettingHelper.cs":
復(fù)制代碼 代碼如下:

SettingHelper
#region 文件描述
//-------------------------------------------------------------------------------------------------
// 描述:服務(wù)安裝配置幫助類
// 作者:鮑昊晟
// 時(shí)間:2012-05-10
//-------------------------------------------------------------------------------------------------
#endregion
using System;
using System.IO;
using System.Xml;
/// <summary>
/// 服務(wù)安裝配置幫助類
/// </summary>
internal class SettingHelper : IDisposable
{
#region 私有成員
private string _ServiceName;
private string _DisplayName;
private string _Description;
#endregion
#region 構(gòu)造函數(shù)
/// <summary>
/// 初始化服務(wù)配置幫助類
/// </summary>
public SettingHelper()
{
InitSettings();
}
#endregion
#region 屬性
/// <summary>
/// 系統(tǒng)用于標(biāo)志此服務(wù)的名稱
/// </summary>
public string ServiceName
{
get { return _ServiceName; }
}
/// <summary>
/// 向用戶標(biāo)志服務(wù)的友好名稱
/// </summary>
public string DisplayName
{
get { return _DisplayName; }
}
/// <summary>
/// 服務(wù)的說明
/// </summary>
public string Description
{
get { return _Description; }
}
#endregion
#region 私有方法
#region 初始化服務(wù)配置信息
/// <summary>
/// 初始化服務(wù)配置信息
/// </summary>
private void InitSettings()
{
string root = System.Reflection.Assembly.GetExecutingAssembly().Location;
string xmlfile = root.Remove(root.LastIndexOf('\\') + 1) + "ServiceSetting.xml";
if (File.Exists(xmlfile))
{
XmlDocument doc = new XmlDocument();
doc.Load(xmlfile);
XmlNode xn = doc.SelectSingleNode("Settings/ServiceName");
_ServiceName = xn.InnerText;
xn = doc.SelectSingleNode("Settings/DisplayName");
_DisplayName = xn.InnerText;
xn = doc.SelectSingleNode("Settings/Description");
_Description = xn.InnerText;
doc = null;
}
else
{
throw new FileNotFoundException("未能找到服務(wù)名稱配置文件 ServiceSetting.xml!");
}
}
#endregion
#endregion
#region IDisposable 成員
private bool disposed = false;
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
protected virtual void Dispose(bool disposing)
{
if (!this.disposed)
{
if (disposing)
{
//managed dispose
_ServiceName = null;
_DisplayName = null;
_Description = null;
}
//unmanaged dispose
}
disposed = true;
}
~SettingHelper()
{
Dispose(false);
}
#endregion
}

3、修改ProjectInstaller.cs文件,在修改構(gòu)造函數(shù)public ProjectInstaller()如下:
復(fù)制代碼 代碼如下:

ProjectInstaller
using System.ComponentModel;
using System.Configuration.Install;
namespace WSInstallTest
{
[RunInstaller(true)]
public partial class ProjectInstaller : Installer
{
public ProjectInstaller()
{
InitializeComponent();
using (SettingHelper setting = new SettingHelper())
{
serviceInstaller1.ServiceName = setting.ServiceName;
serviceInstaller1.DisplayName = setting.DisplayName;
serviceInstaller1.Description = setting.Description;
}
}
//end of class
}
}

4、執(zhí)行安裝命令:
在開始菜單中找到“Microsoft Visual Studio 2008”-->“Visual Studio Tools”-->“Visual Studio 2008 命令提示”,右鍵“以管理員身份運(yùn)行”。
在命令行中輸入以下命令:
復(fù)制代碼 代碼如下:

Setting environment for using Microsoft Visual Studio 2008 x86 tools.
C:\Windows\system32>installutil /logfile d:\wsinstalltest.exe

5、當(dāng)出現(xiàn)以下文字的時(shí)候就表明安裝成功了
復(fù)制代碼 代碼如下:

安裝成功提示信息
Microsoft (R) .NET Framework 安裝實(shí)用工具版本 2.0.50727.5420
版權(quán)所有(C) Microsoft Corporation。保留所有權(quán)利。
正在運(yùn)行事務(wù)處理安裝。
正在開始安裝的“安裝”階段。
查看日志文件的內(nèi)容以獲得 d:\wsinstalltest.exe 程序集的進(jìn)度。
該文件位于 。
正在安裝程序集“d:\wsinstalltest.exe”。
受影響的參數(shù)是:
logtoconsole =
assemblypath = d:\wsinstalltest.exe
logfile =
正在安裝服務(wù) testme...
已成功安裝服務(wù) testme。
正在日志 Application 中創(chuàng)建 EventLog 源 testme...
“安裝”階段已成功完成,正在開始“提交”階段。
查看日志文件的內(nèi)容以獲得 d:\wsinstalltest.exe 程序集的進(jìn)度。
該文件位于 。
正在提交程序集“d:\wsinstalltest.exe”。
受影響的參數(shù)是:
logtoconsole =
assemblypath = d:\wsinstalltest.exe
logfile =
“提交”階段已成功完成。
已完成事務(wù)處理安裝。
C:\Windows\system32>

可以進(jìn)入“服務(wù)”程序中查看剛才安裝的服務(wù)已經(jīng)安裝好了。
6、備注:
運(yùn)行“sc start testme”啟動(dòng)服務(wù);
運(yùn)行“sc stop testme”停止服務(wù);
運(yùn)行“sc delete testme”刪除服務(wù)。

相關(guān)文章

  • C#開啟線程的四種示例

    C#開啟線程的四種示例

    這篇文章主要介紹了C#開啟線程的四種方法,幫助大家更好的理解和使用c#,感興趣的朋友可以了解下
    2020-10-10
  • C#使用ScrapySharp快速從網(wǎng)頁采集數(shù)據(jù)

    C#使用ScrapySharp快速從網(wǎng)頁采集數(shù)據(jù)

    這篇文章介紹了使用ScrapySharp快速從網(wǎng)頁采集數(shù)據(jù)的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-06-06
  • C#的泛型方法解析

    C#的泛型方法解析

    本文講解了C#2.0引入的泛型知識,主要包含泛型類、泛型接口、泛型委托,并且重點(diǎn)講解了泛型方法,已經(jīng)泛型的約束分類。最后給了一些利用泛型方法操作xml的方法。希望對大家有所幫助
    2016-12-12
  • C# linq查詢之動(dòng)態(tài)OrderBy用法實(shí)例

    C# linq查詢之動(dòng)態(tài)OrderBy用法實(shí)例

    這篇文章主要介紹了C# linq查詢之動(dòng)態(tài)OrderBy用法,實(shí)例分析了C#采用linq方式查詢時(shí)動(dòng)態(tài)排序的相關(guān)技巧,需要的朋友可以參考下
    2015-06-06
  • WPF實(shí)現(xiàn)繪制餅狀統(tǒng)計(jì)圖的示例代碼

    WPF實(shí)現(xiàn)繪制餅狀統(tǒng)計(jì)圖的示例代碼

    這篇文章主要為大家詳細(xì)介紹了如何使用WPF實(shí)現(xiàn)繪制簡單的餅狀統(tǒng)計(jì)圖,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-10-10
  • 手動(dòng)編譯C#代碼的方法

    手動(dòng)編譯C#代碼的方法

    在本文里小編給大家分享的是關(guān)于手動(dòng)編譯C#代碼的方法和步驟,對此有需要的朋友們可以學(xué)習(xí)下。
    2018-12-12
  • 詳解WPF的InkCanvas選擇模式

    詳解WPF的InkCanvas選擇模式

    這篇文章主要介紹了WPF InkCanvas選擇模式的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)使用c# wpf,感興趣的朋友可以了解下
    2021-04-04
  • C# 預(yù)處理器指令的用法

    C# 預(yù)處理器指令的用法

    本文主要介紹了C# 預(yù)處理器指令的用法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • c#枚舉值增加特性說明(推薦)

    c#枚舉值增加特性說明(推薦)

    這篇文章主要介紹了c#枚舉值增加特性說明(推薦),需要的朋友可以參考下
    2017-05-05
  • C#面向切面編程之AspectCore用法詳解

    C#面向切面編程之AspectCore用法詳解

    AspectCore?是Lemon名下的一個(gè)國產(chǎn)Aop框架,提供了一個(gè)全新的輕量級和模塊化的Aop解決方案,下面我們就來深入了解下AspectCore在C#中的具體使用吧
    2024-01-01

最新評論

鹤壁市| 收藏| 白银市| 定边县| 武城县| 兰州市| 叙永县| 岫岩| 厦门市| 焦作市| 茶陵县| 内丘县| 泰顺县| 三门县| 舟山市| 抚顺市| 阳城县| 买车| 台南市| 河津市| 航空| 盐津县| 水富县| 新田县| 玉环县| 彩票| 盐源县| 临泉县| 泽普县| 京山县| 抚顺县| 汶川县| 环江| 洱源县| 博爱县| 拜城县| 涡阳县| 师宗县| 临沭县| 晋宁县| 邢台县|