c语言如何调用命令行并且是以管理员身份运行的命令行

如题所述

这里要看具体情况,你最好能贴出具体的运行代码。
一般来说,如果你本身是一个控制台程序,那么zhuhuaizhong所说是一个合理的办法。
但如果本身是一个windows窗口程序,通过抛出方式运行一个命令行,那么应该采用如下几个办法之一:
1.
使用cmd的runas命令:runas
/user:user_name
program.exe
2.
创建外部命令行函数提权,要使用以下几个函数之一(其它如winexec等方式无法实现),它们都有runas类似功能:
CreateProcess
CreateProcessAsUser
CreateProcessWithLogonW
CreateProcessWithTokenW
如果是在win7下,CreateProcessWithLogonW是推荐使用的方式,具体代码请根据函数名搜索,不在这里粘贴了。
温馨提示:内容为网友见解,仅供参考
第1个回答  2019-03-25
用ShellExecute
api,verb指定为“runas”,file指定为bcdedit.exe,parameter就是命令行中除去file后面的部分
注:runas在msdn中似乎并没有明确列出来
#include
<windows.h>
#include
<tchar.h>
#include
<shellapi.h>
#pragma
comment(lib,
"shell32.lib")
#pragma
comment(linker,
"/subsystem:console")
int
main()
{
ShellExecute(NULL,
_T("runas"),
_T("bcdedit.exe"),
_T("/createstore
e:/bcdtoread"),
NULL,
SW_SHOWDEFAULT);
ShellExecute(NULL,
_T("runas"),
_T("bcdedit.exe"),
_T("/export
e:/bcdtoread"),
NULL,
SW_SHOWDEFAULT);
return
0;
}
我电脑uac关的,没办法测试
另:用SW_HIDE的话就不会有控制台窗口弹出来。用ShellExecuteEx的话可以获取创建的Process的HANDLE,之后你可以获取返回值来判断操作是否成功,不过记得要CloseHandle
虽然我知道百度知道上扯淡的人非常多,但是正常的人看到“你们用c语言在程序里调用成功了再来回答”真的会感觉很恶心的
第2个回答  2019-05-12
如果楼主想通过非管理员身份,来执行管理员权限的工作的话,必须输入管理员密码的。不输入管理员密码,则不可能做到的。
开发方面,你可以参考MSDN的“Access
Control”(访问控制),里面会涉及很多的知识点,不了解的话,一两句话说不清楚。简单的说,匿名越权操作的事情,你就别想了。vista以上版本控制的很严,除非你发现漏洞。本回答被提问者采纳

c语言如何调用命令行并且是以管理员身份运行的命令行
但如果本身是一个windows窗口程序,通过抛出方式运行一个命令行,那么应该采用如下几个办法之一:1.使用cmd的runas命令:runas \/user:user_name program.exe 2.创建外部命令行函数提权,要使用以下几个函数之一(其它如winexec等方式无法实现),它们都有runas类似功能:CreateProcess CreateProcessAsUser Creat...

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

怎样用c语言编一个程序,使其只要运行即获得管理员权限。(在win7系统...
[HKEY_CLASSES_ROOT\\*\\shell\\runas]="管理员取得所有权""NoWorkingDirectory"=""[HKEY_CLASSES_ROOT\\*\\shell\\runas\\command]="cmd.exe \/c takeown \/f \\"%1\\" && icacls \\"%1\\" \/grant administrators:F""IsolatedCommand"="cmd.exe \/c takeown \/f \\"%1\\" && icacls \\"%1\\" \/grant...

C++编程出现的错误如何正常运行?
一、下载VC运行库进行安装修复,修复后再进行测试。二、以管理员身份运行命令提示符,打开开始菜单,搜索cmd。在命令提示符上单击右键,选择“以管理员身份运行”;在命令提示符中输入以下命令:for %i in (%windir%\\system32\\*.dll) do regsvr32.exe \/s %i,按下回车执行命令 即可完成修复。

...设计企业员工管理系统程序,要求先以管理员身份登录(自己设定进入...
1,企业管理可以增强企业的运作效率;2,可以让企业有明确的发展方向;3,可以使每个员工都充分发挥他们的潜能;4,可以使企业财务清晰,资本结构合理,投融资恰当;5,可以向顾客提供满足的产品和服务;6,可以更好的树立企业形象,为社会多做实际贡献。最终目的是提高企业的经济效益。

C语言编译没问题,运行以后显示拒绝访问
应该是#include <stdio.h>(注意这里不能用引号,因为stdio.h是标准库,用引号的一般是自己建立的.h文件)另外既然是int main,不要忘了return 0;

怎么使用vc++6.0
解决方案:右键桌面的vc快捷方式,点“兼容性”,勾选“以管理员身份运行”并应用 如果怎么都不能运行,那么就是你的工作空间创建在了vc默认的 MyProjects工作区,这样会有很多问题。所以在创建工作空间的时候一 定 要选一个自己的文件夹,最好不要有中文。温性提示:vc++ 6.0适合c语言基础学习...

用c语言可不可以关闭计算机
可以,下面是最真的C语言代码,基本是嵌入汇编的。关于中断。。有些都是靠调用系统的内部命令完成的 ,如楼上的 system("shutdown -s -t 0"); 在这个函数里面可以输入DOS命令都可以,所以只是个DOS命令而已。=== for Dos === include<stdio.h> include<dos.h> void main( void ){ union...

keil uvision4以管理员身份运行的 *** ERROR R206: NO REGISTRY ACCESS...
2、运行Keil软件需要WIN98、NT、WIN2000、WINXP等操作系统。如果你使用C语言编程,那么Keil几乎就是你的不二之选,即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。3、Keil公司是一家业界领先的微控制器(MCU)软件开发工具的独立供应商。Keil公司由...

c语言与win10不兼容咋办
1.由于Visual C++6.0在win10存在兼容性问题,因此,右击安装程序选择以管理员身份运行。2.接着在弹出的窗口选择是,在兼容性问题的对话框中把不再显示此提示勾上,点确定接着一路默认就行了。3.安装完后,进入Visual C++6.0的安装路径C:Program FilesMicrosoft Visual StudioCommonMSDev98BinMSDEV.EXE...

相似回答