一段代码在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下有这种情况?
...全文
177 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
syy64 2006-02-07
  • 打赏
  • 举报
回复
调用的DLL是自己编的?
DentistryDoctor 2006-02-07
  • 打赏
  • 举报
回复
The following example shows you how to call this function.

#define UNICODE
LPCWSTR lpDomain = L"."; // user's domain
=>
LPCWSTR lpDomain = NULL;
jhtzz 2006-02-07
  • 打赏
  • 举报
回复
可能跟这个有关系。在我的机子上,sida是属管理员组,而在2000下是属user组,所以运行结果不一样,但只要在2000下给sida加下管理员组,就好了。那要让程序正常运行,还需要哪些工作呢?
寻开心 2006-02-07
  • 打赏
  • 举报
回复
楼主的代码在我的2000系统下没有问题啊
只要2000系统下有sida用户,密码是sex的话
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/createprocesswithlogonw.asp
idAnts 2006-02-07
  • 打赏
  • 举报
回复
你把这个代码去掉就可以在2000下跑了?
idAnts 2006-02-07
  • 打赏
  • 举报
回复
2000是C:\winnt
Xp是C:\windows
有这个区别……

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧