【发布时间】:2012-09-26 10:29:35
【问题描述】:
以下代码生成:
MyProgram1.exe 中 0x749ab763 处的未处理异常:0xC0000005:访问冲突写入位置 0x00d4eb38。
SECURITY_ATTRIBUTES sa = {0};
sa.nLength = sizeof(sa);
STARTUPINFO si = {0};
si.cb = sizeof(si);
//si.cbReserved2 = sizeof(si);
si.lpDesktop = L"winsta0\\default";
CreateProcessAsUser(hUserTokenDup, NULL, L"Setup.exe", &sa, &sa, false, NORMAL_PRIORITY_CLASS | CREATE_NEW_CONSOLE, NULL, NULL, &si, &procinfo);
代码有什么问题吗?请帮忙
【问题讨论】:
-
您将一个 const 字符串传递给一个非常量参数(第三个参数是 inout)。
-
感谢 avakar,它不再显示错误。但是进程 setup.exe 没有启动,没有窗口,并且任务管理器中的进程没有显示它。你知道为什么吗?
-
@JohnKenedy,
GetLastError()报告了什么? -
我检查它报告 5 访问被拒绝。然后我尝试使用 AdjustTokenPrivileges 设置调试特权,但它返回 1300,即 ERROR_NOT_ALL_ASSIGNED。然后我得到令牌信息,它返回 3 当前进程没有 TOKEN_ADJUST_PRIVILEGES 访问权限。我该如何解决这个问题?