> Clear DLLs > >* Logon Flags > > #Define LOGON_WITH_PROFILE 0x00000001 > #Define LOGON_NETCREDENTIALS_ONLY 0x00000002 > >* Creation Flags > > #Define CREATE_SUSPENDED 0x00000004 > #Define CREATE_NEW_CONSOLE 0x00000010 > #Define CREATE_NEW_PROCESS_GROUP 0x00000200 > #Define CREATE_UNICODE_ENVIRONMENT 0x00000400 > #Define CREATE_SEPARATE_WOW_VDM 0x00000800 > #Define CREATE_DEFAULT_ERROR_MODE 0x04000000 > >* Priority Flags > > #Define NORMAL_PRIORITY_CLASS 32 > #Define IDLE_PRIORITY_CLASS 64 > #Define HIGH_PRIORITY_CLASS 128 > #Define REALTIME_PRIORITY_CLASS 1600 > > #Define STARTF_USESHOWWINDOW 1 > #Define SW_SHOWNORMAL 1 > > Declare Integer CreateProcessWithLogonW In advapi32 String lpUsername , ; > String lpDomain , ; > String lpPassword , ; > Integer dwLogonFlags , ; > String lpApplicationName , ; > String lpCommandLine , ; > Integer dwCreationFlags , ; > Integer lpEnvironment , ; > String lpCurrentDirectory , ; > String @lpStartupInfo , ; > String @lpProcessInformation > > > cUsername = "MyUsername" > cPassword = "MyPassword" > cDomain = "MyDomain" > nLogonFlags = LOGON_NETCREDENTIALS_ONLY > cApplicationName = "c:\windows\notepad.exe" + chr (0) > cCommandLine = chr (0) > > nCreationFlags = NORMAL_PRIORITY_CLASS + ; > CREATE_DEFAULT_ERROR_MODE + ; > CREATE_NEW_CONSOLE + ; > CREATE_NEW_PROCESS_GROUP > > nEnvironment = 0 > cCurrentDirectory = chr (0) > > cStartupInfo = num2dword (68) + ; > num2dword (0) + ; > num2dword (0) + ; > num2dword (0) + ; > num2dword (0) + ; > num2dword (0) + ; > num2dword (0) + ; > num2dword (0) + ; > num2dword (0) + ; > num2dword (0) + ; > num2dword (0) + ; > num2dword (STARTF_USESHOWWINDOW) + ; > num2dword (SW_SHOWNORMAL ) + ; > num2dword (0) + ; > num2dword (0) + ; > num2dword (0) + ; > num2dword (0) > > cProcessInformation = Replicate (Chr (0), 16) > > If CreateProcessWithLogonW ( cUsername , ; > cDomain , ; > cPassword , ; > nLogonFlags , ; > cApplicationName , ; > cCommandLine , ; > nCreationFlags , ; > nEnvironment , ; > cCurrentDirectory , ; > @cStartupInfo , ; > @cProcessInformation) = 0 > > ShowLastError () > > Return > > EndIf > > >* =========================================================================== > > Procedure ShowLastError >*-------- -------------- > > #Define FORMAT_MESSAGE_FROM_SYSTEM 4096 > > Declare Integer GetLastError In Kernel32 > > Declare Integer FormatMessage In Kernel32 Integer dwFlags , ; > String lpSource , ; > Integer dwMessageId , ; > Integer dwLanguageId , ; > String @lpBuffer , ; > Integer nSize , ; > Integer Arguments > > nLastError = GetLastError () > cMessageText = Space (256) > nRetCode = FormatMessage (FORMAT_MESSAGE_FROM_SYSTEM, 0, nLastError, 0, @cMessageText, 256, 0) > > Messagebox ("Error #" + lTrim (Str (nLastError)) + ":" + cMessageText) > > Return > >* =========================================================================== > > Function num2dword (lnValue) >*-------- --------- > > #DEFINE m0 0x0000100 > #DEFINE m1 0x0010000 > #DEFINE m2 0x1000000 > > IF lnValue < 0 > nValue = 0x100000000 + lnValue > ENDIF > > LOCAL b0, b1, b2, b3 > > b3 = Int(lnValue/m2) > b2 = Int((lnValue - b3*m2)/m1) > b1 = Int((lnValue - b3*m2 - b2*m1)/m0) > b0 = Mod(lnValue, m0) > > RETURN Chr(b0)+Chr(b1)+Chr(b2)+Chr(b3) > > EndFunc > >* =========================================================================== >