Falha do servidor realmente não é para recomendações de produtos. Houve uma pergunta semelhante em SF em 2013, e o OP acabou criando um script de logon perguntando o motivo até que seja dado, ou seja, não vazio:
<!-- language: lang-vb --> ' Display an input dialog asking the reason for a login and writes it to the event viewer with information of the user. Const EVENT_TYPE = "Information" 'Available Values: Success, Error, Warning, Information Const EVENT_SOURCE = "LoginAudit" 'Setting the event source requires that the script runs with administrative privileges firstname = GetUserFirstname() username = GetUsername() loginReason = "" Do While (loginReason = "") loginReason = InputBox("Hi " + firstname + ", please describe the reason of your login:", "Login Audit") Loop eventDescription = "User '" & username & "' logged in, providing the following reason: " & Chr(13) & Chr(13) & loginReason Set WshShell = WScript.CreateObject("WScript.Shell") strCommand = "eventcreate /T " & EVENT_TYPE & " /ID 100 /L Application /SO LoginAudit /D " & _ Chr(34) & eventDescription & Chr(34) WshShell.Run strcommand Function GetUserFirstname() Set objSysInfo = CreateObject("ADSystemInfo") Set objCurrentUser = GetObject("LDAP://" & objSysInfo.UserName) GetUserFirstname = objCurrentUser.givenName End Function Function GetUsername() Set objNetwork = CreateObject("Wscript.Network") GetUsername = objNetwork.UserName End Function
Você pode modificar isso para atender às suas necessidades. Eu acho que esta abordagem de campo de formulário aberto atrai dando algumas respostas de uma letra em vez de razões reais. Um menu suspenso pode ser melhor, se todas as ações puderem se enquadrar em procedimentos padrão conhecidos. Sendo parte do trabalho relacionado ao GDPR, você provavelmente já pensou nesses procedimentos para lidar com informações pessoalmente identificáveis .