你可以自己写一个RUNAS程序,想怎么样就怎么样。 我写过了。 Option Explicit Private Const LOGON_WITH_PROFILE = &H1& Private Const CREATE_DEFAULT_ERROR_MODE = &H4000000 Private Const CREATE_NEW_CONSOLE = &H10& Private Const CREATE_NEW_PROCESS_GROUP = &H200&Private Type PROCESS_INFORMATION hProcess As Long hThread As Long dwProcessId As Long dwThreadId As Long End TypePrivate Type STARTUPINFO cb As Long lpReserved As Long lpDesktop As Long lpTitle As Long dwX As Long dwY As Long dwXSize As Long dwYSize As Long dwXCountChars As Long dwYCountChars As Long dwFillAttribute As Long dwFlags As Long wShowWindow As Integer cbReserved2 As Integer lpReserved2 As Byte hStdInput As Long hStdOutput As Long hStdError As Long End Type 'ʹ´°ÌåʼÖÕ±£³ÖÔÚ×îÇ°Ãæ Private Declare Function SetWindowPos Lib "user32" _ (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal X As Long, ByVal Y As Long, _ ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long Const HWND_TOPMOST = -1 Const SWP_NOMOVE = &H2 Const SWP_NOSIZE = &H1 Private Declare Function CreateProcessWithLogon Lib "advapi32" Alias "CreateProcessWithLogonW" (ByVal lpUsername As Long, ByVal lpDomain As Long, ByVal lpPassword As Long, ByVal dwLogonFlags As Long, ByVal lpApplicationName As Long, ByVal lpCommandLine As Long, ByVal dwCreationFlags As Long, ByVal lpEnvironment As Long, ByVal lpCurrentDirectory As Long, lpStartupInfo As STARTUPINFO, lpProcessInfo As PROCESS_INFORMATION) As Long Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long Dim TPath As String Dim OkPath As String 'ÒÔϺ¯ÊýÓÃÖƶ¨ÃûºÍÃÜÂëµ÷ÓÃÁËÓ¦ÓóÌÐò Private Function AnShell(Username As String, Domain As String, Password As String, ApplicationName As String) As Long Dim lpUsername As String, lpDomain As String, lpPassword As String, lpApplicationName As String, lpCommandLine As String, lpCurrentDirectory As String Dim StartInfo As STARTUPINFO, ProcessInfo As PROCESS_INFORMATION lpUsername = Username lpDomain = Domain lpPassword = Password lpApplicationName = ApplicationName lpCommandLine = vbNullString lpCurrentDirectory = vbNullString StartInfo.cb = LenB(StartInfo) StartInfo.dwFlags = 0& CreateProcessWithLogon StrPtr(lpUsername), StrPtr(lpDomain), StrPtr(lpPassword), LOGON_WITH_PROFILE, StrPtr(lpApplicationName), StrPtr(lpCommandLine), CREATE_DEFAULT_ERROR_MODE Or CREATE_NEW_CONSOLE Or CREATE_NEW_PROCESS_GROUP, ByVal 0&, StrPtr(lpCurrentDirectory), StartInfo, ProcessInfo CloseHandle ProcessInfo.hThread CloseHandle ProcessInfo.hProcess AnShell = ProcessInfo.dwProcessId End Function Private Sub Command1_Click() AnShell "chinahcnet.com", "", "chinahcnet.com", OkPath End SubPrivate Sub Form_Click() 'Óøոս¨Á¢µÄ¹ÜÀíÔ±ÔËÐÐÒ»¸ö³ÌÐò,ÕâÀïÊǼÇʱ¾, '²ÎÊý1ΪÓû§Ãû,²ÎÊý2ΪÓò(Ò»°ãΪ¿Õ¾Í¿ÉÒÔÁË,ÒòΪÊDZ¾»ú), '²ÎÊý3ΪҪÔËÐеijÌÐò·¾¶ºÍÃû×Ö(ÕâÀïµ÷ÓõÄÊÇWINDOWSϵijÌÐò, 'ËùÒÔWINDOWS»á×Ô¼ºÕÒµ½µÄ, '³ÌÐòÔËÐÐʱµÄ¼¸¸öPATHÊÇWINDOWS,SYSTEM,SYSTEM32,APP.PATH, 'µ±È»¿ÉÒÔͨ¹ýÐÞ¸ÄWINDOWSµÄPATHÀ´¸Ä±ä) AnShell "test", "", "test", Trim(OkPath) MsgBox OkPath End End Sub
我写过了。
Option Explicit
Private Const LOGON_WITH_PROFILE = &H1&
Private Const CREATE_DEFAULT_ERROR_MODE = &H4000000
Private Const CREATE_NEW_CONSOLE = &H10&
Private Const CREATE_NEW_PROCESS_GROUP = &H200&Private Type PROCESS_INFORMATION
hProcess As Long
hThread As Long
dwProcessId As Long
dwThreadId As Long
End TypePrivate Type STARTUPINFO
cb As Long
lpReserved As Long
lpDesktop As Long
lpTitle As Long
dwX As Long
dwY As Long
dwXSize As Long
dwYSize As Long
dwXCountChars As Long
dwYCountChars As Long
dwFillAttribute As Long
dwFlags As Long
wShowWindow As Integer
cbReserved2 As Integer
lpReserved2 As Byte
hStdInput As Long
hStdOutput As Long
hStdError As Long
End Type
'ʹ´°ÌåʼÖÕ±£³ÖÔÚ×îÇ°Ãæ
Private Declare Function SetWindowPos Lib "user32" _
(ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal X As Long, ByVal Y As Long, _
ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
Const HWND_TOPMOST = -1
Const SWP_NOMOVE = &H2
Const SWP_NOSIZE = &H1
Private Declare Function CreateProcessWithLogon Lib "advapi32" Alias "CreateProcessWithLogonW" (ByVal lpUsername As Long, ByVal lpDomain As Long, ByVal lpPassword As Long, ByVal dwLogonFlags As Long, ByVal lpApplicationName As Long, ByVal lpCommandLine As Long, ByVal dwCreationFlags As Long, ByVal lpEnvironment As Long, ByVal lpCurrentDirectory As Long, lpStartupInfo As STARTUPINFO, lpProcessInfo As PROCESS_INFORMATION) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Dim TPath As String
Dim OkPath As String
'ÒÔϺ¯ÊýÓÃÖƶ¨ÃûºÍÃÜÂëµ÷ÓÃÁËÓ¦ÓóÌÐò
Private Function AnShell(Username As String, Domain As String, Password As String, ApplicationName As String) As Long
Dim lpUsername As String, lpDomain As String, lpPassword As String, lpApplicationName As String, lpCommandLine As String, lpCurrentDirectory As String
Dim StartInfo As STARTUPINFO, ProcessInfo As PROCESS_INFORMATION
lpUsername = Username
lpDomain = Domain
lpPassword = Password
lpApplicationName = ApplicationName
lpCommandLine = vbNullString
lpCurrentDirectory = vbNullString
StartInfo.cb = LenB(StartInfo)
StartInfo.dwFlags = 0&
CreateProcessWithLogon StrPtr(lpUsername), StrPtr(lpDomain), StrPtr(lpPassword), LOGON_WITH_PROFILE, StrPtr(lpApplicationName), StrPtr(lpCommandLine), CREATE_DEFAULT_ERROR_MODE Or CREATE_NEW_CONSOLE Or CREATE_NEW_PROCESS_GROUP, ByVal 0&, StrPtr(lpCurrentDirectory), StartInfo, ProcessInfo
CloseHandle ProcessInfo.hThread
CloseHandle ProcessInfo.hProcess
AnShell = ProcessInfo.dwProcessId
End Function
Private Sub Command1_Click()
AnShell "chinahcnet.com", "", "chinahcnet.com", OkPath
End SubPrivate Sub Form_Click()
'Óøոս¨Á¢µÄ¹ÜÀíÔ±ÔËÐÐÒ»¸ö³ÌÐò,ÕâÀïÊǼÇʱ¾,
'²ÎÊý1ΪÓû§Ãû,²ÎÊý2ΪÓò(Ò»°ãΪ¿Õ¾Í¿ÉÒÔÁË,ÒòΪÊDZ¾»ú),
'²ÎÊý3ΪҪÔËÐеijÌÐò·¾¶ºÍÃû×Ö(ÕâÀïµ÷ÓõÄÊÇWINDOWSϵijÌÐò,
'ËùÒÔWINDOWS»á×Ô¼ºÕÒµ½µÄ,
'³ÌÐòÔËÐÐʱµÄ¼¸¸öPATHÊÇWINDOWS,SYSTEM,SYSTEM32,APP.PATH,
'µ±È»¿ÉÒÔͨ¹ýÐÞ¸ÄWINDOWSµÄPATHÀ´¸Ä±ä)
AnShell "test", "", "test", Trim(OkPath)
MsgBox OkPath
End
End Sub