Does anyone have a good CreateProcessWithLogonW example for registering a dll as an admin a machine? I am not a FoxPro programmer.
here is what I have so far but I'm getting a type mismatch error on the "CreateProcessWithLogonW" call.
*******************
*******************
#define LOGON_WITH_PROFILE 0x1
#define CREATE_NEW_PROCESS_GROUP 0x200
Declare Integer CreateProcessWithLogonW in advapi32.dll ;
String lpUsername , ;
String lpDomain , ;
String lpPassword , ;
Integer dwLogonFlags , ;
String lpApplicationName , ;
String lpCommandLine , ;
Integer dwCreationFlags , ;
Integer lpEnvironment , ;
String lpCurrentDirectory , ;
String @lpStartupInfo , ;
String @lpProcessInfo
Declare Long CloseHande in kernel32.dll ;
hObject as Long
cUser = "autoproxy"
cDomain = "corp"
cPass = "autproxy"
cAppName = "cmd.exe"
cCommandLine = "C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\REGASM.EXE " +lcProgramDestWebDLLQuotes + " /tlb /codebase /s"
cDir = lcProcessDir
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 , ;
null , ;
cDir , ;
@pStart , ;
@pProc ;
RETURN
********************
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
*******************
*******************
Thanks in advance.
here is what I have so far but I'm getting a type mismatch error on the "CreateProcessWithLogonW" call.
*******************
*******************
#define LOGON_WITH_PROFILE 0x1
#define CREATE_NEW_PROCESS_GROUP 0x200
Declare Integer CreateProcessWithLogonW in advapi32.dll ;
String lpUsername , ;
String lpDomain , ;
String lpPassword , ;
Integer dwLogonFlags , ;
String lpApplicationName , ;
String lpCommandLine , ;
Integer dwCreationFlags , ;
Integer lpEnvironment , ;
String lpCurrentDirectory , ;
String @lpStartupInfo , ;
String @lpProcessInfo
Declare Long CloseHande in kernel32.dll ;
hObject as Long
cUser = "autoproxy"
cDomain = "corp"
cPass = "autproxy"
cAppName = "cmd.exe"
cCommandLine = "C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\REGASM.EXE " +lcProgramDestWebDLLQuotes + " /tlb /codebase /s"
cDir = lcProcessDir
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 , ;
null , ;
cDir , ;
@pStart , ;
@pProc ;
RETURN
********************
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
*******************
*******************
Thanks in advance.