我已经创建了一个非常简单的.NET窗口服务,并使用InstallUtil.exe实用程序安装它。
在服务中,我有一段代码:
if (File.Exists("test_file.txt"))
{
// Do something clever
}
我在与服务相同的目录中创建了一个名为test_file.txt的文件,但是代码的注释部分永远不会被执行...?
发布于 2009-05-19 21:19:48
System.Diagnostics.Trace.WriteLine(Directory.GetCurrentDirectory());
将输出当前目录。将该代码放入服务的启动方法中,并使用DebugView等工具检查输出。然后,您将知道您的服务的启动文件夹。
这种简单的技术对于解决服务开发中的许多问题非常有用,特别是在调试服务启动时。
您可能希望服务的工作文件夹是服务可执行文件所在的文件夹(我也是如此)。您可以使用以下代码行更改到该文件夹:
System.IO.Directory.SetCurrentDirectory(System.AppDomain.CurrentDomain.BaseDirectory);
发布于 2013-01-16 07:41:15
你可以让它像这样工作:
string cwd = Path.GetDirectoryName(Environment.GetCommandLineArgs()[0]);
Directory.SetCurrentDirectory(cwd ?? ".");
发布于 2015-11-30 20:54:51
我还想知道Windows服务运行在哪个文件夹中,但源代码不是我的,所以无法修改它。在命令提示符下键入sc qc <service name>
将在BINARY_PATH_NAME中显示该文件夹。
C:\>sc qc
DESCRIPTION:
Queries the configuration information for a service.
USAGE:
sc <server> qc [service name] <bufferSize>
当查询MyService get时:
C:>sc qc MyService
[SC] QueryServiceConfig SUCCESS
SERVICE_NAME: MyService
TYPE : 10 WIN32_OWN_PROCESS
START_TYPE : 3 DEMAND_START
ERROR_CONTROL : 1 NORMAL
BINARY_PATH_NAME : "D:\Routines\MyService\MyService.exe"
LOAD_ORDER_GROUP :
TAG : 0
DISPLAY_NAME : MyService
DEPENDENCIES :
SERVICE_START_NAME : LocalSystem
https://stackoverflow.com/questions/884963
复制相似问题