使用TextReader的C#文件路径默认为Documents and Settings

时间:2014-05-02 19:59:01

标签: c# path windows-server-2003 streamreader textreader

我有一个程序已经作为计划任务运行了很长一段时间。我做了一个更改,甚至没有与TextReader相关,并将.exe的副本放回服务器(Server 2003 R2 SP2),现在当您从计划任务运行程序或只是双击.exe以下行尝试从C:\ Documents and Settings \ user \中读取文件IPAddressMonitor.ini,而不是在.exe位于C:\ IPAddressMonitor的文件夹中。知道为什么吗?

TextReader tr = new StreamReader("IPAddressMonitor.ini");

1 个答案:

答案 0 :(得分:1)

使用反射来获取可执行文件的路径 - 然后只要您的.ini与可执行文件位于同一文件夹中(或者相对于它的某些文件夹),您将不再遇到此问题:

static public string AssemblyDirectory
{
    get
    {
        string codeBase = Assembly.GetExecutingAssembly().CodeBase;
        UriBuilder uri = new UriBuilder(codeBase);
        string path = Uri.UnescapeDataString(uri.Path);
        return Path.GetDirectoryName(path);
    }
}

Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)

有关详细信息,请参阅this SO post