Функции безопасности могут мешать программному управлению функциями безопасности, такими как диалог безопасности, через Ctrl Alt Del . Я сталкивался с такими же проблемами.
О вашем запросе на вызов диалоговое окно смены пароля .
IADsUser
" предназначен для представления и управления учетной записью конечного пользователя в сети [и локально]. "
Если вам не хватает решений, вы можете создать свою собственную быструю форму Windows с полями пароля и связаться с Windows Интерфейс IADsUser , используя поставщика WinNT для привязки к учетная запись локального (вместо сетевого) пользователя на компьютере с XP.
GetObject("WinNT://MYCOMPUTER/jeffsmith,user") //WinNT provider
... и использовать метод ChangePassword (..) (ссылки на образец кода).
usr.ChangePassword szOldPass, szNewPass
Если вы пытаетесь вызвать функции Windows напрямую, чтобы заставить пользователя доверять процессу, то, по общему признанию, настраиваемая форма для смены пароля может выглядеть немного глупой.
RunDLL32
Другой способ, которым вы можете воспользоваться, - это программный вызов RunDLL32.exe из командной строки и выбор нужной Win DLL для вызова диалогового окна смены пароля. Один форум сказал, что в XP работает следующее, если SP2 не установлен. Я не могу проверить это, потому что я на Vista.
rundll32.exe shell32.dll,Control_RunDLL password.cpl
Вы можете Google для многих из них , однако кажется, что это не дотягивает до смены пароля или вызова диалогового окна безопасности Windows.
Информация Microsoft о Run32Dll