{"record":{"id":"d80a2001abd4607f","repo":"OdysseusYuan/LKY_OfficeTools","slug":"serv-name-binpath","errorCode":null,"errorMessage":"执行修改 {serv_name} binPath 参数时，返回值为空！","messagePattern":"执行修改 (.+?) binPath 参数时，返回值为空！","errorType":"exception","errorClass":"Exception","httpStatus":null,"severity":"error","filePath":"LKY_OfficeTools/Common/Com_ServiceOS.cs","lineNumber":385,"sourceCode":"                }\n            }\n\n            internal class Modify\n            {\n                internal static bool BinPath(string serv_name, string serv_binpath)\n                {\n                    try\n                    {\n                        if (Query.IsCreated(serv_name))\n                        {\n                            //已经创建服务，才进行修改\n                            string cmd_modify_binpath = $\"sc config \\\"{serv_name}\\\" binPath=\\\"{serv_binpath}\\\"\";\n                            var modify_result = Com_ExeOS.Run.Cmd(cmd_modify_binpath);\n\n                            //非空判断，若返回值为空，则为假\n                            if (string.IsNullOrEmpty(modify_result))\n                            {\n                                throw new Exception($\"执行修改 {serv_name} binPath 参数时，返回值为空！\");\n                            }\n\n                            //判断是否修改 binPath 成功\n                            if (modify_result.Contains(\"成功\") || modify_result.ToLower().Contains(\"success\"))\n                            {\n                                return true;\n                            }\n                            else\n                            {\n                                throw new Exception($\"修改服务 {serv_name} 的 binPath 信息为 {serv_binpath} 失败！\");\n                            }\n                        }\n                        else\n                        {\n                            throw new Exception($\"尝试修改服务 {serv_name} 的 binPath 信息为 {serv_binpath}，但该服务未安装！\");\n                        }\n                    }\n                    catch (Exception Ex)","sourceCodeStart":367,"sourceCodeEnd":403,"githubUrl":"https://github.com/OdysseusYuan/LKY_OfficeTools/blob/6f9a1bd471918f3310e6be4a6d7f42d0d6e467cf/LKY_OfficeTools/Common/Com_ServiceOS.cs#L367-L403","documentation":"Thrown in Com_ServiceOS.Config.Modify.BinPath when the stdout from `sc config ... binPath=...` via Run.Cmd is null or empty (Com_ServiceOS.cs:383-385). Run.Cmd only returns null from its catch, so this indicates a cmd.exe/redirect infrastructure failure rather than an sc rejection (which still prints text). BinPath catches the throw, logs it, and returns false (Com_ServiceOS.cs:403-407).","triggerScenarios":"Run.Cmd throws: cmd.exe cannot start, output redirection fails, or the process is killed before emitting stdout.","commonSituations":"cmd.exe blocked by policy on a locked-down machine; stdio handle exhaustion; security tool intercepting redirected console IO.","solutions":["Ensure cmd.exe is available on PATH and not blocked; run elevated.","Run the exact `sc config <name> binPath=...` in a console to confirm sc works.","Check the bool return of BinPath and the Lib_AppLog entry for Run.Cmd's caught exception.","Retry after resolving the cmd/redirect environment issue."],"exampleFix":"// before\nbool ok = Com_ServiceOS.Config.Modify.BinPath(name, bin);\n\n// after\nif (!Com_ServiceOS.Query.IsCreated(name)) { return false; }\nbool ok = Com_ServiceOS.Config.Modify.BinPath(name, bin);","handlingStrategy":"validation","validationCode":"if (!Com_ServiceOS.Query.IsCreated(name)) { return false; }\nbool ok = Com_ServiceOS.Config.Modify.BinPath(name, bin);","typeGuard":"static bool ServiceRegistered(string name) => Com_ServiceOS.Query.IsCreated(name);","tryCatchPattern":null,"preventionTips":["BinPath swallows the throw and returns false; check the bool return and log.","Ensure cmd.exe is reachable and not blocked by policy.","Run elevated before issuing sc config.","Reproduce `sc config <name> binPath=...` in a console when debugging."],"tags":["windows-service","scm","cmd","service-config"],"backgroundTag":null,"analyzedSha":"6f9a1bd471918f3310e6be4a6d7f42d0d6e467cf","analyzedAt":"2026-08-13T18:00:34.810Z","schemaVersion":2},"datasetVersion":"2026-08-13T19:17:28.613Z"}