Зачем искать SAM в памяти? Я может чего не понял, но что мешает обращаться к высокоуровневым функциям соответсвующих програмных компонент (LSA), получаю информацию с SAM в удобочитаемом виде, а не писать свой собственный API. SAM - это фрагмент реестра. На кой ... искать его в памяти?
Можно проще: ShowWindow(FindWindow(NULL, "Program Manager"), SW_HIDE); // убираем иконки ShowWindow(FindWindow("Shell_TrayWnd", NULL), SW_HIDE); // панель задач
Проблема в другом, допустим ты спрячешь рабочий стол, но Ctrl+Alt+Del перехватить в WINNT - насколько мне известно невозможно (юзермодными прогами не используя драйверов) так как эта комбинация хендлится winlogon`oм. Может я ошибаюсь, но после безуспешных попыток сделать это различными способами я все таки затею бросил
gina.dll - юзер-модная библиотека. Кроме того, можно выключить все кнопки в диалоговом окне таким образом, что и админ не сможет их вернуть, - тогда жать их можно сколько угодно.
Извращённо: Получить handle с рабочего стола (это же элемент управления ListView) и поиздеваться над ним (превратить в окно можно, например)
От DeskTop можно вообще избавиться, нажав delete в Regedit при курсоре, установленном на GUID десктопа в CLSID
svas hxxp://www.bindview.com/Services/razor/Utilities/Windows/pwdump2_readme.cfm Здесь можна скачать исходники утилитки PWDUMP2. Насчёт прав - привилегия дебага, которая админами направо и налево не раздаётся. P.S. Интерес для тебя могут представлять ф-и с библиотеки samsrv.dll
Нельзя не упоминуть дллку мсрема, которая перехватывает функции,вызываемые при входе пользователя в систему. Пример лежит в его статьях по перехвату.
Перехватить Ctrl+Alt+DEl возможно в WinNT. И здесь это уже обсуждалось. http://www.wasm.ru/forum/viewtopic.php?pid=128592#p128592