Guy*_*Guy 76 .net windows-services
我创建了一个非常简单的.NET Windows服务,并使用InstallUtil.exe实用程序安装它.
在服务中,我有一段代码:
if (File.Exists("test_file.txt"))
{
// Do something clever
}
Run Code Online (Sandbox Code Playgroud)
我在与服务相同的目录中创建了一个名为test_file.txt的文件,但代码的注释部分从未被执行过......?
Dir*_*mar 94
System.Diagnostics.Trace.WriteLine(Directory.GetCurrentDirectory());
Run Code Online (Sandbox Code Playgroud)
将输出当前目录.将该代码放在服务的启动方法中,并使用DebugView之类的工具检查输出.然后您将知道您的服务的启动文件夹.
这种简单的技术对于服务开发中的许多问题都很有用,特别是对于调试服务启动.
您可能希望服务的工作文件夹是服务可执行文件所在的文件夹(我也是如此).您可以使用以下代码行更改为该文件夹:
System.IO.Directory.SetCurrentDirectory(System.AppDomain.CurrentDomain.BaseDirectory);
Run Code Online (Sandbox Code Playgroud)
Jef*_*eff 74
服务从名为Service Control Manager的应用程序启动.此应用程序位于系统目录%WinDir%\ System32中
在Windows 7 Ultimate - 64位上,此路径实际上是:%WinDir%\ SysWOW64
有关详细信息,请参阅MSDN上的服务控制管理器.
感谢Harper Shelby指出了原始帖子的问题.
yan*_*taq 12
你可以这样工作:
string cwd = Path.GetDirectoryName(Environment.GetCommandLineArgs()[0]);
Directory.SetCurrentDirectory(cwd ?? ".");
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
50721 次 |
最近记录: |