Доброго времени суток!
Столкнулся с проблемой. Пишу приложение, ведущее журнал печати на принтере.
Пользуюсь функциями 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. Я знаю, что самый правильный подход, создание службы. Но уже зацепился за проблему,
не отпускает