条件:1、WINXP以USERS用户登陆,但USERS用户组权限是只读。
2、用VB写一个程序在USERS用户登陆后运行。但程序有Administrators组的完全控制权限
(以上所说的权限都是指磁盘文件和文件夹的访问控制权限)
求助:能用VB写出这样的程序吗?如何实现请贴上代码。。最好有注释
谢谢了 或是有别的方法用VB实现在只读权限用户登陆时程序能有文件的完全控制权限
2、用VB写一个程序在USERS用户登陆后运行。但程序有Administrators组的完全控制权限
(以上所说的权限都是指磁盘文件和文件夹的访问控制权限)
求助:能用VB写出这样的程序吗?如何实现请贴上代码。。最好有注释
谢谢了 或是有别的方法用VB实现在只读权限用户登陆时程序能有文件的完全控制权限
解决方案 »
- 我的程序就3个webbrowser控件 和一个按钮控件 我用webbrowser1打开搜狗搜索主页,我用webbrowser2显示搜索后的页面 我想实现单击按钮
- 如何使datagrid控件在显示数据时自动选择列宽?
- 急,关于VB+ACCESS程序在英文操作系统下问题?(UP有分)
- 怎样获得拖过来的多个超链接?
- 关于用sql查询的几个问题
- 关于在sql中比较日期的问题
- 显示dwg图形的控件?
- 菜鸟问题,进来瞧瞧
- 求解一个算法:输入任一年的任一个月,然后计算出这个月的天数天数
- 关于ADO编程的一点小问题!!快来抢分哟!!!
- 怎样保证不重复呢.
- DataGrid中某单元格被选中,它的颜色是兰色的,但是为什么那么短呢.
问题是你要知道admin的账户密码
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 TypePrivate 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
'以下函数用制定名和密码调用了应用程序
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, ProcessInfoCloseHandle ProcessInfo.hThread
CloseHandle ProcessInfo.hProcess
AnShell = ProcessInfo.dwProcessId
End FunctionPrivate Sub Form_Click()
'用刚刚建立的管理员运行一个程序,这里是记事本,参数1为用户名,参数2为域(一般为空就可以了,因为是本机),参数3为要运行的程序路径和名字(这里调用的是WINDOWS下的程序,所以WINDOWS会自己找到的,程序运行时的几个PATH是WINDOWS,SYSTEM,SYSTEM32,APP.PATH,当然可以通过修改WINDOWS的PATH来改变)
AnShell "mAdmin", "", "mAdmin@", "mstsc.exe"
'打开任务管理器,以便查看notepad.exe进程的所有者
End Sub
又不是很难
把vbp做个列表就可以了
如:ShellExecute(Me.hwnd, "Open", 执行文件完整路径, "", 指定运行目录, 1)可以正常执行某程序。
但使用
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, ProcessInfoCloseHandle ProcessInfo.hThread
CloseHandle ProcessInfo.hProcess
AnShell = ProcessInfo.dwProcessId
End FunctionAnShell "mAdmin", "", "mAdmin@", "执行文件完整路径"
则被执行的程序得不到它所在目录的信息,程序无法正常运行。
请问API函数CreateProcessWithLogon的参数中有没有像
ShellExecute(Me.hwnd, "Open", 执行文件完整路径, "", 指定运行目录, 1)
中一样能**指定运行目录**吗?
lpCommandLine = vbNullString
lpCurrentDirectory = vbNullString
这两个参数分别是什么用的?能说明一下吗?