本帖最后由 莫小乐 于 2026-7-20 16:16 编辑
系统_是否为管理员(Vista/10/11 全兼容)
|
| GetTokenInformation_是否为管理员 | 整数型 | | |
| | |
| GetTokenInformation | |
| TokenHandle | 整数型 | | | | TokenInformationClass | 整数型 | | | | TokenInformation | TOKEN_ELEVATION | | | | TokenInformationLength | 整数型 | | | | ReturnLength | 整数型 | | |
|
| GetVersion_是否为管理员 | 整数型 | | |
| kernel32 | |
| GetVersion | |
|
| GetCurrentProcess_是否为管理员 | 整数型 | | |
| kernel32.dll | |
| GetCurrentProcess | |
|
| OpenProcessToken_是否为管理员 | 整数型 | | |
| advapi32.dll | |
| OpenProcessToken | |
| ProcessHandle | 整数型 | | | | DesiredAccess | 整数型 | | | | TokenHandle | 整数型 | | |
|
| CloseHandle_是否为管理员 | 整数型 | | |
| kernel32 | |
| CloseHandle | |
| hObject | 整数型 | | |
|
| TOKEN_ELEVATION | | |
| TokenIsElevated | 整数型 | | |
|
| TOKEN_QUERY | 8 | | | TokenElevation | 20 | |
| 变量名 | 类 型 | 静态 | 数组 | 备 注 | | WinVer | 短整数型 | | | | hToken | 整数型 | | | | te | TOKEN_ELEVATION | | | | dwReturnLength | 整数型 | | | | bIsElevated | 逻辑型 | | | | Bin | 字节集 | | |
WinVer = 位与 (GetVersion_是否为管理员 (), 65535 ) Bin = 到字节集 (WinVer )WinVer = Bin [1 ]Bin [1 ] = Bin [2 ]Bin [2 ] = WinVer WinVer = 取字节集数据 (Bin, #短整数型, ) 如果真 (WinVer < 1536 ) 返回 (假) 如果真 (OpenProcessToken_是否为管理员 (GetCurrentProcess_是否为管理员 (), #TOKEN_QUERY, hToken ) ≠ 0 ) GetTokenInformation_是否为管理员 (hToken, #TokenElevation, te, 4, dwReturnLength )  如果真 (dwReturnLength = 4 )  bIsElevated = te.TokenIsElevated ≠ 0 CloseHandle_是否为管理员 (hToken) 返回 (bIsElevated)
系统_以管理员运行
|
| LocalSize_以管理员运行 | 整数型 | | |
| kernel32 | |
| LocalSize | |
| hMem | SHELLEXECUTEINFOA | | |
|
| ShellExecuteExA_以管理员运行 | 整数型 | | |
| shell32 | |
| ShellExecuteExA | |
| lpExecInfo | SHELLEXECUTEINFOA | | |
|
| SHELLEXECUTEINFOA | | |
| cbSize | 整数型 | | | | fMask | 整数型 | | | | hwnd | 整数型 | | | | lpVerb | 文本型 | | | | lpFile | 文本型 | | | | lpParameters | 文本型 | | | | lpDirectory | 文本型 | | | | nShow | 整数型 | | | | hInstApp | 整数型 | | | | lpIDList | 整数型 | | | | lpClass | 文本型 | | | | hkeyClass | 整数型 | | | | dwHotKey | 整数型 | | | | hIcon | 整数型 | | | | hProcess | 整数型 | | |
|
| SW_SHOWDEFAULT | 10 | | | SEE_MASK_FLAG_DDEWAIT | 256 | |
|
| 系统_以管理员运行 | 逻辑型 | | |
| 进程路径 | 文本型 | | | | 运行参数 | 文本型 | | | |
| 变量名 | 类 型 | 静态 | 数组 | 备 注 | | sei | SHELLEXECUTEINFOA | | |
如果 (是否为空 (进程路径 ) 或 进程路径 = “”) sei.lpFile = 取运行目录 () 如果真 (取文本右边 (sei.lpFile, 1 ) ≠ “\”)  sei.lpFile = sei.lpFile + “\” sei.lpFile = sei.lpFile + 取执行文件名 () sei.lpFile = 进程路径 sei.lpParameters = 运行参数sei.lpVerb = “runas”sei.nShow = #SW_SHOWDEFAULT sei.fMask = #SEE_MASK_FLAG_DDEWAIT sei.cbSize = LocalSize_以管理员运行 (sei )返回 (ShellExecuteExA_以管理员运行 (sei ) ≠ 0 )
调用两个实现 如果不是管理员拉起管理员自己!
标签_Result.标题 = 选择 (系统_是否为管理员 (), “管理员身份运行”, “普通身份”) 如果真 (标签_Result.标题 = “普通身份”) 判断 (是否为调试版 ())  信息框 (“程序在调试模式,不能重新打开程序哦~”, #信息图标, “温馨提示”, 取窗口句柄 ())  信息框 (“结束自身、拉起管理员模式运行”, 0, , ) 系统_以管理员运行 (, )  _启动窗口. 销毁 ()  
|