当窗口服务读取文件时,找不到文件路径的一部分

本文关键字:文件 找不到 路径 一部分 窗口 服务 读取 | 更新日期: 2023-09-27 18:20:34

我正在用c#编写一个窗口服务,我的服务读取了一个文件(initialization.ini),我使用下面的代码给出了这个文件的路径,它在读取这个文件时给出了错误(路径问题),我试图在控制台应用程序中运行相同的代码进行测试,它与控制台应用程序一起工作很好,但当我尝试安装窗口服务时,它只在下面给出了错误,我在服务安装时打印了如下文件中的错误:

the error reading file is : System.IO.DirectoryNotFoundException: Could not find a part of the path 'C:'Files'initialisation.ini'.
   at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
   at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
   at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
   at System.IO.StreamReader..ctor(String path, Encoding encoding, Boolean detectEncodingFromByteOrderMarks, Int32 bufferSize, Boolean checkHost)
   at System.IO.StreamReader..ctor(String path, Encoding encoding, Boolean detectEncodingFromByteOrderMarks, Int32 bufferSize)
   at System.IO.StreamReader..ctor(String path, Encoding encoding)
   at System.IO.File.InternalReadAllLines(String path, Encoding encoding)
   at ReadingFileFromFolder.Service1.readFile() in c:'Users'ACER'Desktop'KT-iNDIA'November'5thNovemberKtIndia2015'ReadingFileFromFolder'ReadingFileFromFolder'Service1.cs:line 60

在工作控制台应用程序上调试的实际路径是:

C:'Users'ACER'Desktop'KT-iNDIA'November'5thNovemberKtIndia2015'ReadingFileFromFolder'ReadingFileFromFolder'Files'initialisation.ini

我不知道为什么它在文本文件中显示路径为C:'Files'initialisation.ini(在这个错误中)。

我的错误代码是:

            try
            {
                string appRootDir = new DirectoryInfo(Environment.CurrentDirectory).Parent.Parent.FullName;
                var filePathAndName = Path.Combine(appRootDir, "''Files''initialisation.ini");
                lines = File.ReadAllLines(filePathAndName);
                foreach (string line in lines)
                {
                    folderInvestigationBureau(line);                   
                }
            }
            catch (Exception e)
            {
                m_streamWriter.WriteLine("the error reading file is : " + e);
            }

编辑:即使在更改为string appRootDir = AppDomain.CurrentDomain.BaseDirectory;后,我也尝试打印appRootDir以获取运行可执行服务的路径,但它没有打印任何路径是否存在任何与帐户相关的问题,这是我的项目安装程序属性http://prntscr.com/8z7s15这是注册表项http://prntscr.com/8z8ivu,还请注意,当我登录到我的计算机以打开我的帐户时,我需要提供密码。如果这就是问题所在

如何解决此问题

当窗口服务读取文件时,找不到文件路径的一部分

您需要使用:AppDomain.CurrentDomain.BaseDirectory

string appRootDir=AppDomain.CurrentDomain.BaseDirectory;

如果这不是正确的路径,请注释您现在获得的位置