CreateProcessWithLogonW 不成功。错误码 1060

贪食蛇男 2011-07-05 08:37:44
1060: 指定的服务并未以已安装的服务存在。
请问调用这个函数还需要什么样的服务必须在运行着吗?
这个在我自己的电脑上可以正常使用,在公司机器上无法以其他用户创建进程。
求教。
...全文
233 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
powerlinm 2013-02-17
  • 打赏
  • 举报
回复
需要 secondary logon 服务运行才行.
贪食蛇男 2011-07-05
  • 打赏
  • 举报
回复
代码如下所示:

#include <windows.h>
#include <stdio.h>
#include <userenv.h>

#pragma comment(lib, "Advapi32.lib")
#pragma comment(lib, "Userenv.lib")

#ifdef UNICODE
#define RunAsUser RunAsUserW
#else
#define RunAsUser RunAsUserA
#endif

BOOL WINAPI RunAsUserW(LPCWSTR userName, LPCWSTR pswd, LPWSTR application)
{
BOOL bRet = FALSE;

do
{
DWORD dwSize = MAX_PATH;
HANDLE hToken;
LPVOID lpvEnv;
PROCESS_INFORMATION pi = {0};
STARTUPINFOW si = {sizeof(STARTUPINFO)};
wchar_t szUserProfile[MAX_PATH] = {0};

if (!LogonUserW(userName,
L".",
pswd,
LOGON32_LOGON_INTERACTIVE,
LOGON32_PROVIDER_DEFAULT,
&hToken))
{
break;
}

if (!CreateEnvironmentBlock(&lpvEnv, hToken, TRUE))
{
break;
}

if (!GetUserProfileDirectoryW(hToken, szUserProfile, &dwSize))
{
break;
}

if (!CreateProcessWithLogonW(userName,
NULL,
pswd,
LOGON_WITH_PROFILE,
NULL,
application,
CREATE_UNICODE_ENVIRONMENT,
NULL,
szUserProfile,
&si,
&pi))
{
DestroyEnvironmentBlock(lpvEnv);
break;
}

DestroyEnvironmentBlock(lpvEnv);
CloseHandle(hToken);
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);

bRet = TRUE;
} while (FALSE);

return bRet;
}

BOOL WINAPI RunAsUserA(LPCSTR userName, LPCSTR pswd, LPSTR application)
{
BOOL bRet = FALSE;
LPWSTR wUName = NULL;
LPWSTR wPswd = NULL;
LPWSTR wApp = NULL;

do
{
unsigned int nameLen = strlen(userName);
unsigned int pswdLen = strlen(pswd);
unsigned int appLen = strlen(application);

wUName = (LPWSTR)malloc((nameLen + 1) * sizeof(wchar_t));
wPswd = (LPWSTR)malloc((pswdLen + 1) * sizeof(wchar_t));
wApp = (LPWSTR)malloc((appLen + 1) * sizeof(wchar_t));
if(!wUName || !wPswd || !wApp)
{
break;
}

memset(wUName, 0, (nameLen + 1) * sizeof(wchar_t));
memset(wPswd, 0, (pswdLen + 1) * sizeof(wchar_t));
memset(wApp, 0, (appLen + 1) * sizeof(wchar_t));

MultiByteToWideChar(GetACP(), 0, userName, nameLen, wUName, nameLen + 1);
MultiByteToWideChar(GetACP(), 0, pswd, pswdLen, wPswd, pswdLen + 1);
MultiByteToWideChar(GetACP(), 0, application, appLen, wApp, appLen + 1);

bRet = RunAsUserW(wUName, wPswd, wApp);
} while (FALSE);

if(wUName)
{
free(wUName);
}
if(wPswd)
{
free(wPswd);
}
if(wApp)
{
free(wApp);
}
return bRet;
}

int main(int argc, char** argv)
{
if(argc != 4)
{
printf("Usage: %s username password application\n", argv[0]);
return 1;
}
if(!RunAsUser(argv[1], argv[2], argv[3]))
{
printf("创建进程失败\n");
}

return 0;
}

oyljerry 2011-07-05
  • 打赏
  • 举报
回复
运行的程序本身权限是否足够。用户名,密码等在对应电脑上是否有安全属性设置》
luciferisnotsatan 2011-07-05
  • 打赏
  • 举报
回复
帮顶一下
渔舟唱晚, 2011-07-05
  • 打赏
  • 举报
回复
帮顶一下
chainyu 2011-07-05
  • 打赏
  • 举报
回复
不是很懂,帮顶一下。。。
贪食蛇男 2011-07-05
  • 打赏
  • 举报
回复
这个版人真少……
谁回贴分给谁吧。唉

15,472

社区成员

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

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