3

服务代码如下

            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 文件夹而不是映射到本地文件夹的任何想法

4

3 回答 3

3

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

链接可能会有所帮助:

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

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

于 2012-01-31T12:01:42.240 回答
0

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

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

如果提供了 UserName 和 Password,则必须设置 WorkingDirectory 属性。如果未设置该属性,则默认工作目录为 %SYSTEMROOT%\system32。

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

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

于 2012-01-31T12:00:07.923 回答
0

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

于 2012-01-31T11:06:43.063 回答