第一个 0 表示这个数是 八进制
第二个 6 表示文件拥有者同组用户有读写权限,但没有执行权限
第三个 6 表示其它用户有读写权限,但没有执行权限
6 的 二进制就是 0110
第 1 位在权限中总是为 0
第 2 位为 0 表示文件不可以被读, 为 1 表示可以被读
第 3 位为 0 表示文件不可以被写, 为 1 表示可以被写
第 4 位为 0 表示文件不可以被执行, 为 1 表示可以被执行
emmm,我记得microsoft三件套就有这个特性给一个从CSDN找到的代码
#include windows.h//这里自己加上括号
VOID ManagerRun(LPCSTR exe,LPCSTR param,INT nShow=SW_SHOW)
{ //注意:会跳出提示。
SHELLEXECUTEINFO ShExecInfo
ShExecInfo.cbSize = sizeof(SHELLEXECUTEINFO)
ShExecInfo.fMask = SEE_MASK_NOCLOSEPROCESS
ShExecInfo.hwnd = NULL
ShExecInfo.lpVerb = "runas"
ShExecInfo.lpFile = exe
ShExecInfo.lpParameters = param
ShExecInfo.lpDirectory = NULL
ShExecInfo.nShow = nShow
ShExecInfo.hInstApp = NULL
BOOL ret = ShellExecuteEx(&ShExecInfo)
//等不及了,不等了。
CloseHandle(ShExecInfo.hProcess)
return
}
int main(int argc,char *argv[])
{
if(argc == 1) //初次运行,即双击EXE
{
ShowWindow(GetConsoleWindow(),SW_HIDE)
ManagerRun(argv[0],"2")
return 1
}else if(argc == 2) //再次运行,即上面那个ManagerRun
{
/*你的程序主代码在此*/
}
return 0
}
两种方法.一种是修改最终编译的文件加上一个manifest文件,这样 *** 作系统启动程序的时候就会自动请求管理员权限
二个就是检测到当前没有管理员权限时,重新启动当前进程,启动的动词加上runas,这样 *** 作系统就会请求以管理员模式启动它了.
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)