How about this? import ctypes
NULL = 0 TRUE = 1 FALSE = 0 INVALID_HANDLE_VALUE = -1 WORD = ctypes.c_ushort DWORD = ctypes.c_uint LPSTR = ctypes.c_char_p LPBYTE = LPSTR HANDLE = DWORD # typedef struct _PROCESS_INFORMATION { # HANDLE hProcess; # HANDLE hThread; # DWORD dwProcessId; # DWORD dwThreadId; # } PROCESS_INFORMATION, *PPROCESS_INFORMATION, *LPPROCESS_INFORMATION; class PROCESS_INFORMATION(Structure): _pack_ = 1 _fields_ = [ ('hProcess', HANDLE), ('hThread', HANDLE), ('dwProcessId', DWORD), ('dwThreadId', DWORD), ] # typedef struct _STARTUPINFO { # DWORD cb; # LPSTR lpReserved; # LPSTR lpDesktop; # LPSTR lpTitle; # DWORD dwX; # DWORD dwY; # DWORD dwXSize; # DWORD dwYSize; # DWORD dwXCountChars; # DWORD dwYCountChars; # DWORD dwFillAttribute; # DWORD dwFlags; # WORD wShowWindow; # WORD cbReserved2; # LPBYTE lpReserved2; # HANDLE hStdInput; # HANDLE hStdOutput; # HANDLE hStdError; # } STARTUPINFO, *LPSTARTUPINFO; class STARTUPINFO(Structure): _pack_ = 1 _fields_ = [ ('cb', DWORD), ('lpReserved', DWORD), # LPSTR ('lpDesktop', LPSTR), ('lpTitle', LPSTR), ('dwX', DWORD), ('dwY', DWORD), ('dwXSize', DWORD), ('dwYSize', DWORD), ('dwXCountChars', DWORD), ('dwYCountChars', DWORD), ('dwFillAttribute', DWORD), ('dwFlags', DWORD), ('wShowWindow', WORD), ('cbReserved2', WORD), ('lpReserved2', DWORD), # LPBYTE ('hStdInput', DWORD), ('hStdOutput', DWORD), ('hStdError', DWORD), ] # BOOL WINAPI CreateProcessWithLogonW( # __in LPCWSTR lpUsername, # __in_opt LPCWSTR lpDomain, # __in LPCWSTR lpPassword, # __in DWORD dwLogonFlags, # __in_opt LPCWSTR lpApplicationName, # __inout_opt LPWSTR lpCommandLine, # __in DWORD dwCreationFlags, # __in_opt LPVOID lpEnvironment, # __in_opt LPCWSTR lpCurrentDirectory, # __in LPSTARTUPINFOW lpStartupInfo, # __out LPPROCESS_INFORMATION lpProcessInfo # ); def CreateProcessWithLogonW(lpUsername = None, lpDomain = None, lpPassword = None, dwLogonFlags = 0, lpApplicationName = None, lpCommandLine = None, dwCreationFlags = 0, lpEnvironment = None, lpCurrentDirectory = None, lpStartupInfo = None): if not lpUsername: lpUsername = NULL else: lpUsername = ctypes.c_wchar_p(lpUsername) if not lpDomain: lpDomain = NULL else: lpDomain = ctypes.c_wchar_p(lpDomain) if not lpPassword: lpPassword = NULL else: lpPassword = ctypes.c_wchar_p(lpPassword) if not lpApplicationName: lpApplicationName = NULL else: lpApplicationName = ctypes.c_wchar_p(lpApplicationName) if not lpCommandLine: lpCommandLine = NULL else: lpCommandLine = ctypes.create_unicode_buffer(lpCommandLine) if not lpEnvironment: lpEnvironment = NULL else: lpEnvironment = ctypes.c_wchar_p(lpEnvironment) if not lpCurrentDirectory: lpCurrentDirectory = NULL else: lpCurrentDirectory = ctypes.c_wchar_p(lpCurrentDirectory) if not lpStartupInfo: lpStartupInfo = STARTUPINFO() lpStartupInfo.cb = sizeof(STARTUPINFO) lpStartupInfo.lpReserved = 0 lpStartupInfo.lpDesktop = 0 lpStartupInfo.lpTitle = 0 lpStartupInfo.dwFlags = 0 lpStartupInfo.cbReserved2 = 0 lpStartupInfo.lpReserved2 = 0 lpProcessInformation = PROCESS_INFORMATION() lpProcessInformation.hProcess = INVALID_HANDLE_VALUE lpProcessInformation.hThread = INVALID_HANDLE_VALUE lpProcessInformation.dwProcessId = 0 lpProcessInformation.dwThreadId = 0 success = ctypes.windll.advapi32.CreateProcessWithLogonW(lpUsername, lpDomain, lpPassword, dwLogonFlags, lpApplicationName, ctypes.byref(lpCommandLine), dwCreationFlags, lpEnvironment, lpCurrentDirectory, ctypes.byref(lpStartupInfo), ctypes.byref(lpProcessInformation)) if success == FALSE: raise ctypes.WinError() return lpProcessInformation On Tue, Jun 2, 2009 at 6:00 PM, Tim Roberts <t...@probo.com> wrote: > Emin.shopper Martinian.shopper wrote: >> On Mon, Jun 1, 2009 at 1:32 PM, Tim Roberts <t...@probo.com> wrote: >> >>> Emin.shopper Martinian.shopper wrote: >>> >>>> Dear Experts, >>>> >>>> Can someone provide an example of how to use CreateProcessWithLogonW? >>>> >>> It's really just a combination of LogonUser and CreateProcess. >>> >> >> Right, the problem is that I don't see it in win32process. Where do I >> get CreateProcessWithLogonW? >> > > Well, there's always ctypes... > > -- > Tim Roberts, t...@probo.com > Providenza & Boekelheide, Inc. > > _______________________________________________ > python-win32 mailing list > python-win32@python.org > http://mail.python.org/mailman/listinfo/python-win32 > -- HONEY: I want to… put some powder on my nose. GEORGE: Martha, won’t you show her where we keep the euphemism?
_______________________________________________ python-win32 mailing list python-win32@python.org http://mail.python.org/mailman/listinfo/python-win32