无法让sc.exe为我的程序工作

时间:2013-04-23 16:40:40

标签: windows service

我正在尝试关注this website并安装我们作为服务提供的程序。

这就是我所拥有的:

SC CREATE SqlPort binPath= “D:\RPG\VbLib\SqlPort\SqlPort\srvstart.exe SqlPort -c D:\RPG\VbLib\SqlPort\SqlPort\sqlport.ini” DisplayName= SqlPort start= auto

当我按下回车键时,它会给我帮助:

DESCRIPTION:
        Creates a service entry in the registry and Service Database.
USAGE:
        sc <server> create [service name] [binPath= ] <option1> <option2>...

OPTIONS:
NOTE: The option name includes the equal sign.
      A space is required between the equal sign and the value.
 type= <own|share|interact|kernel|filesys|rec>
       (default = own)
 start= <boot|system|auto|demand|disabled|delayed-auto>
       (default = demand)
 error= <normal|severe|critical|ignore>
       (default = normal)
 binPath= <BinaryPathName>
 group= <LoadOrderGroup>
 tag= <yes|no>
 depend= <Dependencies(separated by / (forward slash))>
 obj= <AccountName|ObjectName>
       (default = LocalSystem)
 DisplayName= <display name>
 password= <password>

我将帮助与我的帮助进行了比较,我没有看到任何问题。这是在Windows 7 x64系统上。

任何人都能看到我做错了什么?

4 个答案:

答案 0 :(得分:8)

我遇到了这个问题,我的引号很好......最后想出来了 - 必须<= em>在'='之后的空格!

即。这不起作用/造成'帮助'转储:

Microsoft.VisualStudio.Text.Editor.IWpfTextView textView = GetTextView();
if (textView != null)
{
                SnapshotPoint caretPosition = textView.Caret.Position.BufferPosition;
                Document document = caretPosition.Snapshot.GetOpenDocumentInCurrentContextWithChanges();
                if (document != null)
                {
                    SyntaxToken? token = document.GetSyntaxRootAsync().Result?.FindToken(caretPosition);                        
    }
}

但这有效:

C:\>sc create "My Service" binPath="C:\MyService\MyService.exe"

原始问题中描述的行为比不正确的引号更“通用”。这是操作系统对以任何方式格式不正确的命令做出反应的方式。它可能是任何非ANSI字符,或命令格式的其他问题(例如拼写错误的“binPath”等)

答案 1 :(得分:3)

您在粘贴的文字中有。可能想尝试用普通的"引号替换它们。

答案 2 :(得分:1)

三件事很重要。

    应该写
  1. binPath =“ 而不是 binPath =” binPath =“
  

请注意空间

  1. 必须正确书写
  

错误的“,正确的”

  1. cmd.exe以管理员身份运行

样品

sc create "Service Name" binPath= "E:\ServiceFolder\ServiceName.exe"

答案 3 :(得分:0)

就我而言,我没有转义内部双引号之一。

曾经:

sc config postgresql-x64-13 start= auto displayname= "PostgreSQL Server 13" binPath= "\"C:\Program Files\PostgreSQL\13\bin\pg_ctl.exe\" runservice -N \"postgresql-x64-13\" -D \"D:\PostgreSQL\13\data" -w"

需要在 D:\PostgreSQL\data 后转义结束双引号:

sc config postgresql-x64-13 start= auto displayname= "PostgreSQL Server 13" binPath= "\"C:\Program Files\PostgreSQL\13\bin\pg_ctl.exe\" runservice -N \"postgresql-x64-13\" -D \"D:\PostgreSQL\13\data\" -w"

错误信息是一样的:

<块引用>

“等号和值之间需要一个空格。”

而且,它根本没有帮助。