获取应用程序路径 - WPF与Windows服务

时间:2010-02-25 21:08:44

标签: c# wpf windows-services

我需要知道一种可靠的方法,我可以确定启动Windows服务的文件夹。确定这一点的方式似乎与您在WPF applciaiton中确定它的方式不同。

更多细节(可选阅读):

我有一个嵌入式sql数据库,WPF应用程序和Windows服务都使用它。

在开发过程中,两个项目的数据库相对路径都不同,因为它们在访问同一个嵌入式数据库时从自己的调试目录运行。

现在,我正在尝试创建一个安装程序。我已将windows服务可执行文件和wpf应用程序可执行文件移动到同一根目录。

在wpf applciation中,我成功创建了一个指向嵌入式数据库的数据库连接字符串,但在Windows服务中我没有成功创建此连接字符串。

3 个答案:

答案 0 :(得分:3)

使用Assembly.GetEntryAssembly获取主程序集。在那里,您将拥有位置属性,告诉您代码的安装位置。

请注意,服务的当前目录是c:\ windows \ system32(假设默认安装目录)。

答案 1 :(得分:3)

要获取安装Windows服务的目录,您可以使用:

        private string GetExeDir()
    {
        System.Reflection.Assembly ass = System.Reflection.Assembly.GetExecutingAssembly();
        string codeBase = System.IO.Path.GetDirectoryName(ass.CodeBase);
        System.Uri uri = new Uri(codeBase);
        return uri.LocalPath;
    }

答案 2 :(得分:2)

我认为你是从错误的方向攻击问题。我将在配置文件中为WPF应用程序和Windows服务配置数据库的路径。然后,您的代码将使用配置文件中的路径构建连接字符串。

或者,您可以考虑使用环境变量并在安装程序中设置该环境变量。