Andrew Eikum : advapi32: Implement CreateProcessAsUserA.
Alexandre Julliard
julliard at winehq.org
Fri Sep 14 10:54:21 CDT 2012
Module: wine
Branch: master
Commit: eaf709fb19f0d376da41847be60299cdd35b04e1
URL: http://source.winehq.org/git/wine.git/?a=commit;h=eaf709fb19f0d376da41847be60299cdd35b04e1
Author: Andrew Eikum <aeikum at codeweavers.com>
Date: Thu Sep 13 15:54:41 2012 -0500
advapi32: Implement CreateProcessAsUserA.
---
dlls/advapi32/security.c | 39 +++++++++++++++++++++++++++++++++++++--
1 files changed, 37 insertions(+), 2 deletions(-)
diff --git a/dlls/advapi32/security.c b/dlls/advapi32/security.c
index 83558ae..8b60dd6 100644
--- a/dlls/advapi32/security.c
+++ b/dlls/advapi32/security.c
@@ -5091,11 +5091,46 @@ BOOL WINAPI CreateProcessAsUserA(
LPSTARTUPINFOA lpStartupInfo,
LPPROCESS_INFORMATION lpProcessInformation )
{
- FIXME("%p %s %s %p %p %d 0x%08x %p %s %p %p - stub\n", hToken, debugstr_a(lpApplicationName),
+ BOOL ret;
+ WCHAR *appW, *cmdlnW, *cwdW;
+ STARTUPINFOW sinfo;
+
+ TRACE("%p %s %s %p %p %d 0x%08x %p %s %p %p\n", hToken, debugstr_a(lpApplicationName),
debugstr_a(lpCommandLine), lpProcessAttributes, lpThreadAttributes, bInheritHandles,
dwCreationFlags, lpEnvironment, debugstr_a(lpCurrentDirectory), lpStartupInfo, lpProcessInformation);
- return FALSE;
+ appW = SERV_dup(lpApplicationName);
+ cmdlnW = SERV_dup(lpCommandLine);
+ cwdW = SERV_dup(lpCurrentDirectory);
+ sinfo.cb = sizeof(sinfo);
+ sinfo.lpReserved = SERV_dup(lpStartupInfo->lpReserved);
+ sinfo.lpDesktop = SERV_dup(lpStartupInfo->lpDesktop);
+ sinfo.lpTitle = SERV_dup(lpStartupInfo->lpTitle);
+ sinfo.dwX = lpStartupInfo->dwX;
+ sinfo.dwY = lpStartupInfo->dwY;
+ sinfo.dwXSize = lpStartupInfo->dwXSize;
+ sinfo.dwYSize = lpStartupInfo->dwYSize;
+ sinfo.dwXCountChars = lpStartupInfo->dwXCountChars;
+ sinfo.dwYCountChars = lpStartupInfo->dwYCountChars;
+ sinfo.dwFillAttribute = lpStartupInfo->dwFillAttribute;
+ sinfo.dwFlags = lpStartupInfo->dwFlags;
+ sinfo.wShowWindow = lpStartupInfo->wShowWindow;
+ sinfo.cbReserved2 = lpStartupInfo->cbReserved2;
+ sinfo.lpReserved2 = lpStartupInfo->lpReserved2;
+ sinfo.hStdInput = lpStartupInfo->hStdInput;
+ sinfo.hStdOutput = lpStartupInfo->hStdOutput;
+ sinfo.hStdError = lpStartupInfo->hStdError;
+ ret = CreateProcessAsUserW(hToken, appW, cmdlnW, lpProcessAttributes,
+ lpThreadAttributes, bInheritHandles, dwCreationFlags,
+ lpEnvironment, cwdW, &sinfo, lpProcessInformation);
+ HeapFree(GetProcessHeap(), 0, appW);
+ HeapFree(GetProcessHeap(), 0, cmdlnW);
+ HeapFree(GetProcessHeap(), 0, cwdW);
+ HeapFree(GetProcessHeap(), 0, sinfo.lpReserved);
+ HeapFree(GetProcessHeap(), 0, sinfo.lpDesktop);
+ HeapFree(GetProcessHeap(), 0, sinfo.lpTitle);
+
+ return ret;
}
BOOL WINAPI CreateProcessAsUserW(
More information about the wine-cvs
mailing list