{"record":{"id":"16e55f783094a3db","repo":"peass-ng/PEASS-ng","slug":"a-valid-system-account-name-must-be-supplied-for-t","errorCode":null,"errorMessage":"A valid system account name must be supplied for TaskLogonType.ServiceAccount. Valid entries are \"NT AUTHORITY\\SYSTEM\", \"SYSTEM\", \"NT AUTHORITY\\LOCALSERVICE\", or \"NT AUTHORITY\\NETWORKSERVICE\".","messagePattern":"A valid system account name must be supplied for TaskLogonType\\.ServiceAccount\\. Valid entries are \"NT AUTHORITY\\\\SYSTEM\", \"SYSTEM\", \"NT AUTHORITY\\\\LOCALSERVICE\", or \"NT AUTHORITY\\\\NETWORKSERVICE\"\\.","errorType":"exception","errorClass":"ArgumentException","httpStatus":null,"severity":"error","filePath":"winPEAS/winPEASexe/winPEAS/TaskScheduler/TaskFolder.cs","lineNumber":495,"sourceCode":"        /// <para>This example registers that same task using a specific username and password along with a security definition.</para>\n        /// <code lang=\"cs\"><![CDATA[\n        /// TaskService.Instance.RootFolder.RegisterTaskDefinition(\"TaskName\", taskDefinition, TaskCreation.CreateOrUpdate, \"userDomain\\\\userName\", \"userPassword\", TaskLogonType.Password, @\"O:BAG:DUD:(A;ID;0x1f019f;;;BA)(A;ID;0x1f019f;;;SY)(A;ID;FA;;;BA)(A;;FR;;;BU)\");\n        /// ]]></code></example>\n        public Task RegisterTaskDefinition([NotNull] string path, [NotNull] TaskDefinition definition, TaskCreation createType, string userId, string password = null, TaskLogonType logonType = TaskLogonType.S4U, string sddl = null)\n        {\n            if (definition.Actions.Count < 1 || definition.Actions.Count > 32)\n                throw new ArgumentOutOfRangeException(nameof(definition.Actions), @\"A task must be registered with at least one action and no more than 32 actions.\");\n\n            userId ??= definition.Principal.Account;\n            if (userId == string.Empty) userId = null;\n            User user = new User(userId);\n            if (v2Folder != null)\n            {\n                definition.Actions.ConvertUnsupportedActions();\n                if (logonType == TaskLogonType.ServiceAccount)\n                {\n                    if (string.IsNullOrEmpty(userId) || !user.IsServiceAccount)\n                        throw new ArgumentException(@\"A valid system account name must be supplied for TaskLogonType.ServiceAccount. Valid entries are \"\"NT AUTHORITY\\SYSTEM\"\", \"\"SYSTEM\"\", \"\"NT AUTHORITY\\LOCALSERVICE\"\", or \"\"NT AUTHORITY\\NETWORKSERVICE\"\".\", nameof(userId));\n                    if (password != null)\n                        throw new ArgumentException(@\"A password cannot be supplied when specifying TaskLogonType.ServiceAccount.\", nameof(password));\n                }\n                /*else if ((LogonType == TaskLogonType.Password || LogonType == TaskLogonType.InteractiveTokenOrPassword ||\n\t\t\t\t\t(LogonType == TaskLogonType.S4U && UserId != null && !user.IsCurrent)) && password == null)\n\t\t\t\t{\n\t\t\t\t\tthrow new ArgumentException(\"A password must be supplied when specifying TaskLogonType.Password or TaskLogonType.InteractiveTokenOrPassword or TaskLogonType.S4U from another account.\", nameof(password));\n\t\t\t\t}*/\n                else if (logonType == TaskLogonType.Group && password != null)\n                {\n                    throw new ArgumentException(@\"A password cannot be supplied when specifying TaskLogonType.Group.\", nameof(password));\n                }\n                // The following line compensates for an omission in the native library that never actually sets the registration date (thanks ixm7).\n                if (definition.RegistrationInfo.Date == DateTime.MinValue) definition.RegistrationInfo.Date = DateTime.Now;\n                var iRegTask = v2Folder.RegisterTaskDefinition(path, definition.v2Def, (int)createType, userId ?? user.Name, password, logonType, sddl);\n                if (createType == TaskCreation.ValidateOnly && iRegTask == null)\n                    return null;\n                return Task.CreateTask(TaskService, iRegTask);","sourceCodeStart":477,"sourceCodeEnd":513,"githubUrl":"https://github.com/peass-ng/PEASS-ng/blob/53fb989abc2219826385683a6fee826bd6cd38d6/winPEAS/winPEASexe/winPEAS/TaskScheduler/TaskFolder.cs#L477-L513","documentation":"Error \"A valid system account name must be supplied for TaskLogonType.ServiceAccount. Valid entries are \"NT AUTHORITY\\SYSTEM\", \"SYSTEM\", \"NT AUTHORITY\\LOCALSERVICE\", or \"NT AUTHORITY\\NETWORKSERVICE\".\" thrown in peass-ng/PEASS-ng.","triggerScenarios":"Thrown at winPEAS/winPEASexe/winPEAS/TaskScheduler/TaskFolder.cs:495 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Pass one of the accepted system accounts: \"NT AUTHORITY\\SYSTEM\" (or \"SYSTEM\"), \"NT AUTHORITY\\LOCALSERVICE\", or \"NT AUTHORITY\\NETWORKSERVICE\".","Use a different TaskLogonType (e.g. Password or InteractiveToken) when registering under a normal user account.","Validate the userId against the known service-account names before calling RegisterTaskDefinition."],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"53fb989abc2219826385683a6fee826bd6cd38d6","analyzedAt":"2026-09-02T04:25:09.259Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-09T11:17:12.671Z"}