Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
CreateProcessWithLogonW Problem
Message
General information
Forum:
Visual FoxPro
Category:
Windows API functions
Title:
CreateProcessWithLogonW Problem
Miscellaneous
Thread ID:
00701364
Message ID:
00701364
Views:
82
I was following Ed Ruah's class to run processes, but trying to
modify it to use the CreateProcessWithLogonW API
function to start things under a different user account.

My code is not working, can anyone comment on
why I would get a "Data type mismatch", and
why this won't launch?

I created a local user account called "aaa" with password "aaa".

Thanks.
   *   Launch process under another user account

   #define LOGON_WITH_PROFILE         0x1
   #define LOGON_NETCREDENTIALS_ONLY    0x2
   #define CREATE_DEFAULT_ERROR_MODE   0x4000000
   #define CREATE_NEW_CONSOLE         0x10
   #define CREATE_NEW_PROCESS_GROUP   0x200
   #define CREATE_SEPARATE_WOW_VDM   0x800
   #define CREATE_SUSPENDED            0x4
   #define CREATE_UNICODE_ENVIRONMENT   0x400
   #define ABOVE_NORMAL_PRIORITY_CLASS   0x8000
   #define BELOW_NORMAL_PRIORITY_CLASS   0x4000
   #define HIGH_PRIORITY_CLASS         0x80
   #define IDLE_PRIORITY_CLASS            0x40
   #define NORMAL_PRIORITY_CLASS         0x20
   #define REALTIME_PRIORITY_CLASS      0x100


   Local lpStartupInfo as String , lpProcessInfo as String


   Declare Long CreateProcessWithLogonW in advapi32.dll ;
      String lpUsername , ;
      String lpDomain , ;
      String lpPassword , ;
      Long dwLogonFlags , ;
      String lpApplicationName , ;
      String lpCommandLine , ;
      Long dwCreationFlags , ;
      Long lpEnvironment , ;
      String lpCurrentDirectory , ;
      String @lpStartupInfo , ;
      String @lpProcessInfo

   Declare Long CloseHande in kernel32.dll ;
      hObject as Long

   cUser = "aaa"
   cDomain = "phlmisl2scraft"
   cPass = "aaa"
   cAppName = "C:\WINNT\cmd.EXE"
   cCommandLine = Chr(0)
   cDir = "d:\"
   pStart = long2str(68) + REPLICATE(CHR(0), 64)
   pProc = REPLICATE(CHR(0), 16)


   CreateProcessWithLogonW( ;
      cUser , ;
      cDomain , ;
      cPass , ;
      LOGON_WITH_PROFILE , ;
      cAppName , ;
      cCommandLine , ;
      CREATE_NEW_PROCESS_GROUP , ;
      Chr(0) , ;
      cDir , ;
      @pStart , ;
      @pProc ;
   )














FUNCTION long2str
********************
* Passed : 32-bit non-negative numeric value (m.longval)
* Returns : ASCII character representation of passed
* value in low-high format (m.retstr)
* Example :
* m.long = 999999
* m.longstr = long2str(m.long)
PARAMETERS m.longval
PRIVATE i, m.retstr
m.retstr = ""
FOR i = 24 TO 0 STEP -8
m.retstr = CHR(INT(m.longval/(2^i))) + m.retstr
m.longval = MOD(m.longval, (2^i))
NEXT
RETURN m.retstr
ENDFUNC
Next
Reply
Map
View

Click here to load this message in the networking platform