我正在用C#编写一个Windows服务,它会生成我正在编写的另一个应用程序的多个实例。应用程序有可能安装在计算机上的任何位置。让服务知道应用程序所在位置的最佳方法是什么?
答案 0 :(得分:8)
如果您需要找到安装服务的文件夹,可以使用以下代码
this.GetType().Assembly.Location
如果您需要找到安装了其他应用程序的文件夹,则应向Windows安装程序发出请求
[DllImport("MSI.DLL", CharSet = CharSet.Auto)]
private static extern UInt32 MsiGetComponentPath(
string szProduct,
string szComponent,
StringBuilder lpPathBuf,
ref int pcchBuf);
private static string GetComponentPath(string product, string component)
{
int pathLength = 1024;
StringBuilder path = new StringBuilder(pathLength);
MsiGetComponentPath(product, component, path, ref pathLength);
return path.ToString();
}
答案 1 :(得分:6)
如果您的意思是该服务启动不同的应用,那么;选项:
就个人而言,我喜欢配置文件选项;它简单易用,并允许多个单独(并排)服务和应用程序安装
答案 2 :(得分:1)
using System.IO;
using System.Windows.Forms;
string appPath = Path.GetDirectoryName(Application.ExecutablePath)
申请(见上文)。
对于asp.net项目:
using System.Web;
HttpContext.Current.Server.MapPath( "place arguments here" );
答案 3 :(得分:1)
System.Environment.CurrentDirectory
答案 4 :(得分:1)
在安装过程中编写注册表变量,这样在提供升级时,您可以回读以前写入的值,并默认为用户以前选择的文件夹。