Для будущих людей, рассматривающих эту проблему, я пытался написать атрибут проверки, который бы оценивал регулярное выражение, если свойство объекта было определенным значением. В моем случае, если адрес был адресом доставки, я не хотел, чтобы PO Boxes был включен, так что это то, что я придумал:
Использование
[Required]
public EAddressType addressType { get; set; } //Evaluate Validation attribute against this
[EvaluateRegexIfPropEqualsValue(Constants.NOT_PO_BOX_REGEX, "addressType", EAddressType.Shipping, ErrorMessage = "Unable to ship to PO Boxes or APO addresses")]
public String addressLine1 { get; set; }
И вот код для атрибута проверки:
[AttributeUsage(AttributeTargets.Property | AttributeTargets.Field, AllowMultiple = false)]
public class EvaluateRegexIfPropEqualsValue : ValidationAttribute
{
Regex _regex;
string _prop;
object _targetValue;
public EvaluateRegexIfPropEqualsValue(string regex, string prop, object value)
{
this._regex = new Regex(regex);
this._prop = prop;
this._targetValue = value;
}
bool PropertyContainsValue(Object obj)
{
var propertyInfo = obj.GetType().GetProperty(this._prop);
return (propertyInfo != null && this._targetValue.Equals(propertyInfo.GetValue(obj, null)));
}
protected override ValidationResult IsValid(object value, ValidationContext obj)
{
if (this.PropertyContainsValue(obj.ObjectInstance) && value != null && !this._regex.IsMatch(value.ToString()))
{
return new ValidationResult(this.ErrorMessage);
}
return ValidationResult.Success;
}
}
Наиболее распространенные способы использовать shutdown
команда:
shutdown -s
— Закрывается. shutdown -r
— Перезапуски. shutdown -l
— Выходит из системы. shutdown -h
— В спящем режиме.
Примечание: существует распространенная ошибка, где пользователи думают -h
, означает "справку" (который это делает для любой программы командной строки... кроме shutdown.exe
, где это означает ", в спящем режиме"). Они тогда работают shutdown -h
и случайно выключают свои компьютеры. Не упустите это.
shutdown -i
— "Интерактивный режим". Вместо того, чтобы выполнить действие, это отображает диалоговое окно графического интерфейса пользователя.
shutdown -a
— Прерывает предыдущую команду завершения работы. команды выше могут быть объединены с этими дополнительными опциями:
-f
— Вынуждает программы выйти. Препятствует тому, чтобы процесс завершения работы застрял. -t <seconds>
— Устанавливает время до завершения работы. Используйте -t 0
для завершения работу сразу. -c <message>
вЂ,” Добавляет сообщение завершения работы. Сообщение закончится в конечном счете Журнал. -y
— Вызывает "да", отвечают на все запросы завершения работы.
Примечание: Эта опция не документируется ни в какую официальную документацию. Это было обнаружено [1 118] эти пользователи StackOverflow .
я хочу удостовериться, что некоторые другие действительно хорошие ответы также упоминаются наряду с этим. Здесь они без определенного порядка.
-f
опция от [1 120] JosephStyonsЕсли Вы находитесь на удаленной машине, можно также хотеть добавить-f опцию к сила перезагрузка. Иначе Ваша сессия может закрыться, и упрямое приложение может подвесить систему.
я использую это каждый раз, когда я хочу вызвать непосредственную перезагрузку:
shutdown -t 0 -r -f
Для более дружественного "дают им некоторое время" опция, можно использовать это:
shutdown -t 30 -r
, Как Вы видите в комментариях,-f подразумевается тайм-аутом.
Brutus 2006 является утилитой, которая обеспечивает GUI для этих опций.
Исходный ответ: октябрь 2008
Вы также добрались весь " serie: rundll32.exe shell32.dll
"
(см. обновление ниже)
rundll32.exe user.exe,**ExitWindows**
[Быстрое Завершение работы Windows] rundll32.exe user.exe,**ExitWindowsExec**
[Windows Перезапуска]
rundll32.exe shell32.dll,SHExitWindowsEx n
, где n
обозначает:
LOGOFF
SHUTDOWN
REBOOT
FORCE
POWEROFF
(может быть объединен-> 6 = 2+4 FORCE REBOOT
)
ИНФОРМАЦИЯ 1800 года доброжелательный указывает в комментариях :
не используют
rundll32.exe
с этой целью. Это ожидает, что функция, Вы передали командную строку, имеет очень определенную сигнатуру метода - это не соответствует сигнатуре метода [1 114].
Raymond CHEN записал:
функциональная подпись, требуемая для функций, вызванных [1 115]:
void CALLBACK ExitWindowsEx(HWND hwnd, HINSTANCE hinst,
LPSTR pszCmdLine, int nCmdShow);
, Который не мешал людям использовать
rundll32
для вызывания случайных функций, которые не были разработаны, чтобы быть названными [1 117], как [1 118] илиuser32 ExitWindowsEx
.
(ой)
фактическая функциональная подпись для ExitWindowsEx:
BOOL WINAPI ExitWindowsEx(UINT uFlags, DWORD dwReserved);
И сделать его совершенно ясным:
Rundll32
остаток от Windows 95, и он был удержан от использования с тех пор, по крайней мере, Windows Vista, потому что он нарушает много современных технических инструкций.
Когда удаленный в машину (цель является Windows XP так или иначе; я не уверен в целевом Windows Vista), хотя Завершение работы на меню "Пуск" заменяется Сессия Разъединения или что-то как этот, должен быть тот, названный 'безопасностью Windows', которая также делает то же самое как Ctrl + Высокий звук + Конец , как указано Owen.
Вы, вероятно, знаете об этом, но на всякий случай: это намного легче только к типу shutdown -r
(или безотносительно команды, которую Вы любите) в поле "Run", и совершите нападки, входят.
Сохранил разбрасывающие пакетные файлы, лежащие везде.
Никто не упомянул -m
опция для удаленного завершения работы:
shutdown -r -f -m \\machinename
Также:
-r
параметр вызывает перезагрузку (который обычно является, что Вы хотите на удаленной машине, с тех пор физически стартовый, это могло бы быть трудно). -f
опция параметра вызывает перезагрузку. Я бы написал это в Блокноте или WordPad для базовой команды выхода:
@echo off
shutdown -l
Это в основном то же самое, что нажать кнопку «Пуск» и «выйти из системы» вручную, но это будет немного быстрее, если у вас есть готовый командный файл.