У меня есть приложение, которое является пусковой установкой для другого приложения (моего основного). Программа запуска переходит на FTP-сервер, скачивает обновления и устанавливает их. Однако исполняемый файл обновления должен скопировать некоторые библиотеки DLL и EXE в каталог установки основного приложения, который находится в Program Files. Из-за этого мне сейчас нужно повысить права программы обновления.
Это проблема, потому что мое приложение запускается при загрузке и, как правило, просто загружается в системный трей (приложение похоже на мессенджер / скайп). Если я начну выводить на экран предупреждения UAC, пытаясь «незаметно» обновить приложение, оно перестанет быть таким тихим.
На данный момент я вижу единственный способ избежать проблемы - это предоставить всем пользователям права доступа к программным файлам. каталог установки, но я не хочу этого делать. Есть другие идеи?
Я использую Windows 7, а приложения написаны на C #. $ stmt-> выполнить (массив (1, 'СЕЙЧАС ()')); но при передаче NOW () в ...
На мой взгляд, следующий сценарий должен работать:
$stmt = $db->prepare("UPDATE table SET status = ?, date_modified = ?");
$stmt->execute(array(1, 'NOW()'));
но при передаче NOW ()
в подготовленный оператор ничего не происходит. Замена NOW ()
на фактическую дату (например, 2010-11-23) работает нормально.
Я не могу найти объяснение в Интернете. Есть идеи?
Чтобы еще больше прояснить и избавиться от путаницы в вопросе, я действительно хочу передать переменную в подготовленный оператор, ОДНАКО, переменная будет установлена в одну из пяти возможных функций даты / времени для mysql.
например
$ var = 'NOW ()';
$ var = 'LAST_DAY (DATE_ADD (CURDATE (), ИНТЕРВАЛ 1 МЕСЯЦ)) ';
$ var = 'LAST_DAY (CURDATE ())';
... и так далее ...
подготовленный оператор превращается в:
$stmt->execute(array(1, $var));
Я знаю, что это вернет те же результаты NULL, но я меня беспокоит, если я просто изменю оператор sql на:
UPDATE table SET status =?, date_modified = $ var
Я открываюсь для инъекции?