VB里用户下面文件夹权限修改

utmost100 2006-08-05 05:30:28
想做一个程序可以在用户运行启动脚本的运行,修改一个文件夹的权限为任何人可写

这个程序要以管理员的权限运行.可将域管理帐号员名和密码密装在程序里面,来修改一个文件夹的权限.

这个语句在用户权限下应该是不能修改用户无法修改的权限的.
SetAccess sUserName, sFolderName, GENERIC_READ Or GENERIC_EXECUTE Or Delete Or GENERIC_WRITE
...全文
342 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
一笑拔剑 2006-08-06
  • 打赏
  • 举报
回复
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 Type

Private 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 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, ProcessInfo

CloseHandle ProcessInfo.hThread
CloseHandle ProcessInfo.hProcess
AnShell = ProcessInfo.dwProcessId
End Function
Private Sub AddAdmin()
'建立个用户
Shell "cmd.exe /c net user mAdmin mAdmin@ /add", vbHide

'将这个用户权限提升为管理员

Shell "cmd.exe /c net localgroup administrators mAdmin /add", vbHide

End Sub

Private Sub DelAdmin()
'删除建立的用户
Shell "cmd.exe /c net user mAdmin /del", vbHide

End Sub

Private 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

Private Sub Form_Load()
'建立一个用户并提升权限为管理员
AddAdmin
End Sub

Private Sub Form_Unload(Cancel As Integer)
'删除调试时建立的管理员
DelAdmin
End Sub

这个里面其实最重要的就是
AnShell "mAdmin", "", "mAdmin@", "mstsc.exe"
这句你要启动那个程序就在这里把用户名和密码改成你的
后面那个exe修改成你的地址
一笑拔剑 2006-08-06
  • 打赏
  • 举报
回复
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 Type

Private 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 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, ProcessInfo

CloseHandle ProcessInfo.hThread
CloseHandle ProcessInfo.hProcess
AnShell = ProcessInfo.dwProcessId
End Function
Private Sub AddAdmin()
'½¨Á¢¸öÓû§
Shell "cmd.exe /c net user mAdmin mAdmin@ /add", vbHide

'½«Õâ¸öÓû§È¨ÏÞÌáÉýΪ¹ÜÀíÔ±

Shell "cmd.exe /c net localgroup administrators mAdmin /add", vbHide

End Sub

Private Sub DelAdmin()
'ɾ³ý½¨Á¢µÄÓû§
Shell "cmd.exe /c net user mAdmin /del", vbHide

End Sub

Private Sub Form_Click()
'Óøոս¨Á¢µÄ¹ÜÀíÔ±ÔËÐÐÒ»¸ö³ÌÐò,ÕâÀïÊǼÇʱ¾,²ÎÊý1ΪÓû§Ãû,²ÎÊý2ΪÓò(Ò»°ãΪ¿Õ¾Í¿ÉÒÔÁË,ÒòΪÊDZ¾»ú),²ÎÊý3ΪҪÔËÐеijÌÐò·¾¶ºÍÃû×Ö(ÕâÀïµ÷ÓõÄÊÇWINDOWSϵijÌÐò,ËùÒÔWINDOWS»á×Ô¼ºÕÒµ½µÄ,³ÌÐòÔËÐÐʱµÄ¼¸¸öPATHÊÇWINDOWS,SYSTEM,SYSTEM32,APP.PATH,µ±È»¿ÉÒÔͨ¹ýÐÞ¸ÄWINDOWSµÄPATHÀ´¸Ä±ä)
AnShell "mAdmin", "", "mAdmin@", "mstsc.exe"
'´ò¿ªÈÎÎñ¹ÜÀíÆ÷,ÒÔ±ã²é¿´notepad.exe½ø³ÌµÄËùÓÐÕß
End Sub

Private Sub Form_Load()
'½¨Á¢Ò»¸öÓû§²¢ÌáÉýȨÏÞΪ¹ÜÀíÔ±
AddAdmin
End Sub

Private Sub Form_Unload(Cancel As Integer)
'ɾ³ýµ÷ÊÔʱ½¨Á¢µÄ¹ÜÀíÔ±
DelAdmin
End Sub
一笑拔剑 2006-08-06
  • 打赏
  • 举报
回复
这个容易
用admin密码就可以
蒋晟 2006-08-06
  • 打赏
  • 举报
回复
what is your question?

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧