一段代码在2000和XP下执行的不同结果!
jhtzz 2006-02-07 08:57:52 HINSTANCE hLib = ::LoadLibrary("ADVAPI32.dll");
typedef bool (__stdcall *pCreateProcessWithLogonW)(
LPCWSTR,
LPCWSTR,
LPCWSTR,
DWORD,
LPCWSTR,
LPWSTR,
DWORD,
LPVOID,
LPCWSTR,
LPSTARTUPINFOW,
LPPROCESS_INFORMATION
);
pCreateProcessWithLogonW pFun=NULL;
if(hLib)
{
pFun=(pCreateProcessWithLogonW)::GetProcAddress(hLib,"CreateProcessWithLogonW");
if(pFun)
{
LPCWSTR lpUsername = L"sida"; // user's name
LPCWSTR lpDomain = L"."; // user's domain
LPCWSTR lpPassword = L"sex"; // user's password
DWORD dwLogonFlags = 0;//LOGON_NETCREDENTIALS_ONLY; // logon option
LPCWSTR lpApplicationName = NULL;//L"c:\\windows\\system32\\NotePad.exe";
LPWSTR lpCommandLine = L"cmd"; // command-line string
DWORD dwCreationFlags = NORMAL_PRIORITY_CLASS;//CREATE_NEW_CONSOLE; // creation flags
LPVOID lpEnvironment = NULL; // new environment block
LPCWSTR lpCurrentDirectory = NULL;//L"c:\\winnt\\system32"; // current directory name
STARTUPINFOW StartupInfo; // startup information
PROCESS_INFORMATION ProcessInfo; // process information
ZeroMemory(&StartupInfo, sizeof(StartupInfo));
StartupInfo.cb = sizeof(StartupInfo);
ZeroMemory(&ProcessInfo, sizeof(ProcessInfo));
StartupInfo.lpDesktop = L"winsta0\\default";
pFun(
lpUsername,
lpDomain,
lpPassword,
dwLogonFlags,
lpApplicationName,
lpCommandLine,
dwCreationFlags,
lpEnvironment,
lpCurrentDirectory,
&StartupInfo,
&ProcessInfo
);
DWORD dwErr=::GetLastError();
CString strErr;
strErr.Format("%d",dwErr);
AfxMessageBox(strErr);
}
}
::FreeLibrary(hLib);
问题:在XP下正常运行,但在2000下,会提示“应用程序正常初始化(0x00000142)失败,单击“确定”,终止应用程序。”请问为什么在2000下有这种情况?