OS:Win2000
1.В MSDN написано, что заголовок должен быть в <winbase.h> через
<windows.h> но такого заголовка в моей версии Visual Studio 6.0 sp2 нет.
Вопрос почему.
2. Ладно берём из MSDN объявление, и ...
BOOL (*CreateProcessWithLogonW)(
LPCWSTR lpUsername, // user's name
LPCWSTR lpDomain, // user's domain
LPCWSTR lpPassword, // user's password
DWORD dwLogonFlags, // logon option
LPCWSTR lpApplicationName, // executable module name
LPWSTR lpCommandLine, // command-line string
DWORD dwCreationFlags, // creation flags
LPVOID lpEnvironment, // new environment block
LPCWSTR lpCurrentDirectory, // current directory name
LPSTARTUPINFOW lpStartupInfo, // startup information
LPPROCESS_INFORMATION lpProcessInfo // process information
);
HINSTANCE h = LoadLibrary("ADVAPI32.dll");
CreateProcessWithLogonW=(BOOL (*)(
LPCWSTR lpUsername, LPCWSTR lpDomain, LPCWSTR lpPassword,
DWORD dwLogonFlags,LPCWSTR lpApplicationName, LPWSTR lpCommandLine,
DWORD dwCreationFlags, LPVOID lpEnvironment, LPCWSTR lpCurrentDirectory,
LPSTARTUPINFOW lpStartupInfo, LPPROCESS_INFORMATION lpProcessInfo))
GetProcAddress(h,"CreateProcessWithLogonW");//АДРЕС не NULL и не
// 0xcccccc. Проверял.
CreateProcessWithLogonW(
lpUsername, // user's name
lpDomain, // user's domain
lpPassword, // user's password
dwLogonFlags, // logon option
lpApplicationName, // executable module name
lpCommandLine, // command-line string
dwCreationFlags, // creation flags
lpEnvironment, // new environment block
lpCurrentDirectory, // current directory name
&StartupInfo, // startup information
&ProcessInfo // process information
);//Здесь ошибка периода исполнения. Причём у меня есть подозрение, что в
MSDN неправильно описан заголовок функции.
PS: Всё это нужно для того, чтобы под учетной записью обычного пользователя
была возможность запускать программы с динамической загрузкой драйверов.
(чтото типа службы runas только без запрашивания пароля)