gpt4 book ai didi

c++ - 使用 LogonUserW 并使用句柄执行应用程序

转载 作者:行者123 更新时间:2023-11-28 04:14:15 25 4
gpt4 key购买 nike

我是第一次尝试实现 C++ 应用程序,所以请保持温和 :)。

我安装了 CLion 并设置了 MinGW。

首先,我已经无法使用 Windows API LogonUserW() .我的应用程序遇到错误,导致:

image

我的代码是这样的:

#include <iostream>
#include <windows.h>
#include <conio.h>

int main() {
std::cout << "Please press Enter to continue... " << std::endl;
getch();

DWORD dwLogonType = LOGON32_LOGON_NETWORK ;
DWORD dwLogonProvider = LOGON32_PROVIDER_WINNT40 ;
PHANDLE hToken = NULL ;

BOOL result = ::LogonUserW(
L"de313e",
L"DOMAIN",
L"PASSWORD",
dwLogonType,
dwLogonProvider,
hToken);

if (result)
std::cout << "It worked" << std::endl ;
else
std::cout << "Not worked" << std::endl ;
return 0;
}

我的意图是:

  • 以管理员用户身份登录并使用 token 执行流程

  • 以管理员权限执行应用程序

我知道有一个名为 CreateProcessAsUserA() 的 API 调用,但使用 API 监视器我可以找回密码。

因此我很乐意使用 LogonUserW()作为密码的参数:

lpszPassword A pointer to a null-terminated string that specifies the plaintext password for the user account specified by lpszUsername.

我想做的。

我希望有人能帮助我。

最佳答案

这应该可以做到。创建一个常规 HANDLE 并通过引用传递它。

#include <iostream>
#include <windows.h>
#include <conio.h>

int main() {
std::cout << "Please press Enter to continue... " << std::endl;
getch();

DWORD dwLogonType = LOGON32_LOGON_NETWORK;
DWORD dwLogonProvider = LOGON32_PROVIDER_WINNT40;
HANDLE hToken;

BOOL result = LogonUserW(
L"USERNAME",
L"DOMAIN",
L"PASSWORD",
dwLogonType,
dwLogonProvider,
&hToken);

if (result)
std::cout << "It worked" << std::endl;
else
std::cout << "Not worked" << std::endl;
return 0;
}

关于c++ - 使用 LogonUserW 并使用句柄执行应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57008349/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com