void StartProcess(string identity)
{
//net localgroup "Performance Monitor Users" "{user account}" /add
var startInfo = new ProcessStartInfo
{
CreateNoWindow = true,
UseShellExecute = false,
RedirectStandardError = true,
Arguments = string.Format("localgroup \"{1}\" \"{0}\" /add", identity, builtinPerformanceMonitoringUsersName),
FileName = "net",
WorkingDirectory = Path.GetTempPath()
};
using (var process = Process.Start(startInfo))
{
process.WaitForExit(5000);
if (process.ExitCode == 0)
{
logger.Info($"Added user '{identity}' to group '{builtinPerformanceMonitoringUsersName}'.");
return;
}
var error = process.StandardError.ReadToEnd();
if (IsAlreadyAMemberError(error))
{
logger.Info($"Skipped adding user '{identity}' to group '{builtinPerformanceMonitoringUsersName}' because the user is already in group.");
return;
}
if (IsGroupDoesNotExistError(error))
{
logger.Info($"Skipped adding user '{identity}' to group '{builtinPerformanceMonitoringUsersName}' because the group does not exist.");
return;
}
var message = string.Format(
@"Failed to add user '{0}' to group '{2}'.
Error: {1}
To help diagnose the problem try running the following command from an admin console:
net localgroup ""{2}"" ""{0}"" /add", identity, error, builtinPerformanceMonitoringUsersName);
logger.Info(message);
}
}