CreateProcessAsUser 错误 1314

标签 createprocessasuser

我想在另一个用户下创建一个进程。所以我使用 LogonUser 和 CreateProcessAsUser。但我的问题是,CreatePtocessAsUser 总是返回错误代码 1314,这意味着“客户端不持有所需的特权”。所以我的问题是,我做错了什么?或者我怎样才能给 handle 特权? (我认为句柄应该有特权,还是我错了?)对不起我的英语错误,但我的英语知识不是最好的:)

如果有人知道如何更正我的申请,请提供帮助。

这是我的代码的一部分。

STARTUPINFO StartInfo;
PROCESS_INFORMATION ProcInfo;
TOKEN_PRIVILEGES tp;
memset(&ProcInfo, 0, sizeof(ProcInfo));
memset(&StartInfo, 0 , sizeof(StartInfo)); 
StartInfo.cb = sizeof(StartInfo); 
HANDLE handle = NULL;

if (!OpenProcessToken(GetCurrentProcess(),
TOKEN_ALL_ACCESS, &handle)) printf("\nOpenProcessError");

if (!LookupPrivilegeValue(NULL,SE_TCB_NAME,
//SE_TCB_NAME,
&tp.Privileges[0].Luid)) {
printf("\nLookupPriv error");
}

tp.PrivilegeCount = 1;
tp.Privileges[0].Attributes =
SE_PRIVILEGE_ENABLED;//SE_PRIVILEGE_ENABLED;
if (!AdjustTokenPrivileges(handle, FALSE, &tp, 0, NULL, 0)) {
printf("\nAdjustToken error");
}

i = LogonUser(user, domain, password, LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT, &handle);
printf("\nLogonUser return  : %d",i);
i = GetLastError();
printf("\nLogonUser getlast : %d",i);
if (! ImpersonateLoggedOnUser(handle) ) printf("\nImpLoggedOnUser!");

i = CreateProcessAsUser(handle, "c:\\windows\\system32\\notepad.exe",NULL, NULL, NULL, true, 
CREATE_UNICODE_ENVIRONMENT |NORMAL_PRIORITY_CLASS | CREATE_NEW_CONSOLE, NULL, NULL, 
&StartInfo, &ProcInfo);    
printf("\nCreateProcessAsUser return  : %d",i);
i = GetLastError();
printf("\nCreateProcessAsUser getlast : %d",i);

CloseHandle(handle); 
CloseHandle(ProcInfo.hProcess); 
CloseHandle(ProcInfo.hThread); 

提前致谢!

最佳答案

运行您的应用程序的本地帐户必须在本地安全策略中启用以下权限:

  • 作为操作系统的一部分
  • 创建 token 对象
  • 作为批处理作业登录

  • 编辑:请参阅下面帕特尔的回答。在这种情况下,正确的特权应该是:
  • “替换进程级 token ”
  • 关于CreateProcessAsUser 错误 1314,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1475577/

    相关文章:

    c# - createprocessasuser 后 .NET 应用程序崩溃

    使用 getenv 调用 CreateProcessAsUser 的 C++ LPTSTR 问题

    c++ - 如何 CreateProcessAsUser 并使其成为前景窗口?

    winapi - 从非交互式服务 (win32/.net/powershell) 启动 UAC 提升进程

    java - 从本地系统进程启动交互式用户进程 - 获取错误代码 5

    c# - CreateProcessAsUser 不绘制 GUI

    c++ - 从服务打开 UWP 应用程序

    c++ - 管理进程如何在登录用户中打开应用程序?