输入进程名,点按钮后优先级变为高
解决方案 »
- vb 如何触发网页中文本框的onblur事件
- 如何在combo控件中只能选择下拉数据,而不能输入数!据
- 同样一个查询语句在ACCESS2000中可以顺利执行,但用ADO连接执行却报错
- 在VB中怎样调用C的函数?????????
- Excel做报表,怎么做合计功能?
- 各位,你们都用 VB 做什么呀?能拿出来看看吗?
- 在局域网内,如何控制终端用户上网,不使用代理服务器软件?(在线等待高手指教!)
- WIN7系统VB6引用部件MSCOMCTL.OCX不能加载
- 求助:关于mciSendString
- 怎样才能保住程序员的最后一点权利?
- ftpfindfirstfile函数,列举目录中为什么有的ftp地址包含点目录和点点目录,有的不包含?
- winsock中服务端如何连接多个客户端
Public Declare Function OpenProcessToken Lib "advapi32" (ByVal ProcessHandle As Long, ByVal DesiredAccess As Long, TokenHandle As Long) As Long
Public Declare Function LookupPrivilegeValue Lib "advapi32" Alias "LookupPrivilegeValueA" (ByVal lpSystemName As String, ByVal lpName As String, lpLuid As LUID) As Long
Public Declare Function AdjustTokenPrivileges Lib "advapi32" (ByVal TokenHandle As Long, ByVal DisableAllPrivileges As Long, NewState As TOKEN_PRIVILEGES, ByVal BufferLength As Long, PreviousState As TOKEN_PRIVILEGES, ReturnLength As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As LongPublic Const TOKEN_ADJUST_PRIVILEGES = &H20
Public Const TOKEN_QUERY = &H8
Public Const ANYSIZE_ARRAY = 1
Public Const SE_PRIVILEGE_ENABLED = &H2Type LUID
LowPart As Long
HighPart As Long
End TypeType LUID_AND_ATTRIBUTES
pLuid As LUID
Attributes As Long
End TypeType TOKEN_PRIVILEGES
PrivilegeCount As Long
Privileges(ANYSIZE_ARRAY) As LUID_AND_ATTRIBUTES
End TypePublic Sub EnableDebugPriv()
Dim hProc As Long
Dim hToken As Long
Dim mLUID As LUID
Dim mPriv As TOKEN_PRIVILEGES
Dim mNewPriv As TOKEN_PRIVILEGES
hProc = GetCurrentProcess()'若其他进程则用 OpenProcess(PROCESS_ALL_ACCESS, False, m_Pid)'先取得操作句柄
'MsgBox "My Pid is:" & Str(hProc)
OpenProcessToken hProc, TOKEN_ADJUST_PRIVILEGES + TOKEN_QUERY, hToken
Debug.Print "My Pid is:" & Str(hToken)
LookupPrivilegeValue "", "SeDebugPrivilege", mLUID
mPriv.PrivilegeCount = 1
mPriv.Privileges(0).Attributes = SE_PRIVILEGE_ENABLED
mPriv.Privileges(0).pLuid = mLUID
' enable debug privilege for the current application
AdjustTokenPrivileges hToken, False, mPriv, 4 + (12 * mPriv.PrivilegeCount), mNewPriv, 4 + (12 * mNewPriv.PrivilegeCount)
CloseHandle hToken
End Sub
m_Pid 为进程ID号,首先需要通过进程名称取得进程ID号再 OpenProcess 得到句柄,才能提权。至于怎么取得进程ID,我想你已经问道提权了,不应该不知道怎么取得进程ID吧?
'**模 块 名:ModRunFile
'**说 明:紫水晶 版权所有2005 - 2006(C)
'**创 建 人:马大哈(摘于李海文选 http://www.zealsoftstudio.com/articles/qa9805.html)
'**日 期:2005年11月27日
'**描 述:本模块用于以指定优先级运行程序
'**版 本:V1.0
'*************************************************************************
Private Type STARTUPINFO
cb As Long
lpReserved As String
lpDesktop As String
lpTitle As String
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 Long
hStdInput As Long
hStdOutput As Long
hStdError As Long
End TypePrivate Type PROCESS_INFORMATION
hProcess As Long
hThread As Long
dwProcessId As Long
dwThreadId As Long
End TypePrivate Type SECURITY_ATTRIBUTES
nLength As Long
lpSecurityDescriptor As Long
bInheritHandle As Long
End TypePrivate Const HIGH_PRIORITY_CLASS = &H80
Private Const DEF_PRIORITY_CLASS = 11 '
Private Const REALTIME_PRIORITY_CLASS = &H100 '
Private Const STARTF_USESHOWWINDOW = &H1
Private Const MAX_PATH = 260Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal Hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" (hObject As Long) As Boolean
Private Declare Function CreateProcess Lib "kernel32" Alias "CreateProcessA" (ByVal lpApplicationName As String, ByVal lpCommandLine As String, lpProcessAttributes As SECURITY_ATTRIBUTES, lpThreadAttributes As SECURITY_ATTRIBUTES, ByVal bInheritHandles As Long, ByVal dwCreationFlags As Long, lpEnvironment As Any, ByVal lpCurrentDriectory As String, lpStartupInfo As STARTUPINFO, lpProcessInformation As PROCESS_INFORMATION) As LongPublic Sub ShellEx(ByVal ExeName As String, ByVal CmdLine As String, ByVal StartDir As String)
'使用CreateProcess运行程序,可设定初始目录
Dim sInfo As STARTUPINFO
Dim pInfo As PROCESS_INFORMATION
Dim Sec1 As SECURITY_ATTRIBUTES
Dim Sec2 As SECURITY_ATTRIBUTES
Dim pClass As Long
Dim X As Long
Sec1.nLength = Len(Sec1)
Sec2.nLength = Len(Sec2)
sInfo.cb = Len(sInfo)
sInfo.dwFlags = STARTF_USESHOWWINDOW
sInfo.wShowWindow = 1
pClass = HIGH_PRIORITY_CLASS '优先级
X = CreateProcess(ExeName, CmdLine, Sec1, Sec2, True, pClass, 0&, vbNullString, sInfo, pInfo)
X = CloseHandle(pInfo.hProcess)
End Sub函数中的注释是优先级设置,已经是高优先级.调用:call ShellEx("c:\windows\notepad.exe",vbnullstring,vbnullstring)打开后用任务管理器看看优先级吧.