c语言如何以管理员身份调试

c语言如何以管理员身份调试,第1张

如果你的命令要求以管理员身份运行,那么你自己的C语言程序也得是以管理员身份运行的,这可以通过在程序上点击 右键 -》以管理员权限运行 ,或者通过添加一个 manifest 文件的形式来提升权限。参见 jingyan.baidu.com/article/f0e83a25c2e78a22e5910137.html 中的步骤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

}

这里要看具体情况,你最好能贴出具体的运行代码。

一般来说,如果你本身是一个控制台程序,那么zhuhuaizhong所说是一个合理的办法。

但如果本身是一个windows窗口程序,通过抛出方式运行一个命令行,那么应该采用如下几个办法之一:

1.

使用cmd的runas命令:runas

/user:user_name

program.exe

2.

创建外部命令行函数提权,要使用以下几个函数之一(其它如winexec等方式无法实现),它们都有runas类似功能:

CreateProcess

CreateProcessAsUser

CreateProcessWithLogonW

CreateProcessWithTokenW

如果是在win7下,CreateProcessWithLogonW是推荐使用的方式,具体代码请根据函数名搜索,不在这里粘贴了。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7782689.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-09
下一篇 2023-04-09

发表评论

登录后才能评论

评论列表(0条)

保存