Доброго времени суток!
Столкнулся с проблемой. Пишу приложение, ведущее журнал печати на принтере.
Пользуюсь функциями Find*PrinterChangeNotification. Все работает без вопросов,
но есть желание, чтобы снять задачу можно было только с правами администратора.
Приведенный ниже код с вызовами SetSecurityInfo решает эту проблему, но
перестает работать функция FindFirstPrinterChangeNotification (возвращает
INVALID_HANDLE_VALUE). Кто сталкивался с подобной ситуацией, подскажите, пожалуйста,
из-за чего это происходит.
ACL = new _ACL;
if (InitializeAcl(ACL,sizeof(_ACL),ACL_REVISION) && (IsValidAcl(ACL)))
SetSecurityInfo(
GetCurrentProcess(),
SE_WINDOW_OBJECT/*SE_KERNEL_OBJECT*/,
DACL_SECURITY_INFORMATION,
NULL,
NULL,
ACL,
NULL);
hNotify = FindFirstPrinterChangeNotification(
m_hPrinter,
PRINTER_CHANGE_ALL,
0,
&m_no);
P.S. Я знаю, что самый правильный подход, создание службы. Но уже зацепился за проблему,
не отпускает
Y2K>ACL = new _ACL;
приветик!
Может не в тему, но на всякий случай: а ты ACL чем-нить инициализируешь? в смысле значение туда кладёшь?
Денис.
... << RSDN@Home 1.0 beta 6a >>
Здравствуйте, Denis, Вы писали:
Y2K>>ACL = new _ACL;
D>приветик!
D>Может не в тему, но на всякий случай: а ты ACL чем-нить инициализируешь? в смысле значение туда кладёшь?
D>Денис.
Инициализирую. Это я для примера кусок кода бросил, чтобы понятно было, о чем речь

Хотя и просто обнуление списка (без инициализации) тоже нормально срабатывает.
Я тут за утро проблему обошел, если кому интересно. Я сохраняю ACL и перед выполнением
FindFirstChangeNotification возвращаю старое значение списка. После выполнения устанавливаю новое.
FindNextChangeNotification нормально работает с новым. Дыра небольшая, но пойдет в принципе...
Решение есть, но вопрос остался без ответа

Проблема то с FindFirstChangeNotification в чем?