【问题标题】:.NET Windows service executes batch file from system32 folder not install folder.NET Windows 服务从 system32 文件夹执行批处理文件而不是安装文件夹
【发布时间】:2012-02-23 02:32:25
【问题描述】:

服务代码如下

            System.Diagnostics.Process proc = new System.Diagnostics.Process(); // Declare New Process

            var arguments =
                String.Format("--ip {0}  --user {1} --passwd {2} --guest {3} --gpasswd {4} --action {5}",
                              controllerIPAddress, controllerUsername, controllerPassword, username, password, action);

            proc.StartInfo.Arguments = arguments;

            proc.StartInfo.FileName = "C:\\Program Files\\Netspot\\ControllerInterfaceService\\batchfile.bat";

            proc.StartInfo.RedirectStandardError = true;
            proc.StartInfo.RedirectStandardOutput = true;
            proc.StartInfo.UseShellExecute = false;
            proc.StartInfo.CreateNoWindow = true;
            proc.Start();
            proc.WaitForExit();

我有一个 Windows 服务,它运行一个调用 WGET 命令的 dos 脚本,一切都很好,但我需要使用批处理脚本创建和删除一个临时文件夹。

我遇到的问题是服务正在将路径映射到

  c:\windows\system32

而不是

  C:\\Program Files\\Netspot\\ControllerInterfaceService\\

这在测试工具中运行良好。

关于为什么服务使用 system32 文件夹而不是映射到本地文件夹的任何想法

【问题讨论】:

  • 临时文件夹必须在system32 内吗?使用%temp%\aruba-out 可能会起作用..
  • 临时文件不需要在 system32 中,但由于某种原因,当作为服务运行时,它默认为该文件夹而不是安装文件夹
  • 添加了解决问题的proc.working目录

标签: c# .net service directory aruba


【解决方案1】:

默认情况下,Windows 服务的当前目录是 System32。

这个link 可能会有所帮助:

System.IO.Directory.SetCurrentDirectory(System.AppDomain.CurrentDomain.BaseDirectory);

使用上面这行代码将当前目录设置为相同 目录作为您的 Windows 服务。

【讨论】:

    【解决方案2】:

    除非您为 Microsoft 工作,否则不要在 windows\system32 中创建文件夹。

    【讨论】:

      【解决方案3】:

      您的批处理脚本是使用相对路径还是绝对路径?

      如果是相对的,则更改当前工作目录。这可以通过ProcessStartInfo 设置。见 MSDN 信息:http://msdn.microsoft.com/en-us/library/system.diagnostics.processstartinfo.workingdirectory.aspx

      如果 UserName 必须设置 WorkingDirectory 属性 和密码。如果没有设置该属性,则默认 工作目录是 %SYSTEMROOT%\system32。

      还可以考虑按照 Blogbeard 的建议写信给 %temp%

      (请发布您的批处理脚本)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-10-23
        • 1970-01-01
        • 2012-09-20
        • 1970-01-01
        • 2019-06-04
        • 1970-01-01
        • 1970-01-01
        • 2013-01-15
        相关资源
        最近更新 更多