转自csdn的yangw150zhao4zhong1

转自http://www.cnblogs.com/del/archive/2008/02/13/1068229.html

http://blog.csdn.net/go121015603/article/details/41870707

win7下,我想执行net user administrator /active:yes这样一条指令,用system()函数执行时返回错误,返回错误是“发生系统错误 5 拒绝访问”,原来是没有管理员权限,用手动右键点击cmd.exe,选择使用管理员权限运行就ok了,但在代码里如何能模拟管理员权限的cmd来运行一条指令呢?

ShellExecuteA(0,"runas","cmd","","",1); 
这样是以管理员权限打开了cmd窗口

ShellExecute(0,"runas", LPCSTR("cmd.exe"),LPCSTR("/c net user administrator /active:yes"),"",SW_HIDE);

ShellExecute(
  hWnd: HWND;        {指定父窗口句柄}
  Operation: PChar;  {指定动作, 譬如: open、print}
  FileName: PChar;  {指定要打开的文件或程序}
  Parameters: PChar; {给要打开的程序指定参数; 如果打开的是文件这里应该是 nil}
  Directory: PChar;  {缺省目录}
  ShowCmd: Integer  {打开选项}
): HINST;            {执行成功会返回应用程序句柄; 如果这个值 <= 32, 表示执行错误} //返回值可能的错误有:
                      =   {内存不足}
ERROR_FILE_NOT_FOUND  = ;  {文件名错误}
ERROR_PATH_NOT_FOUND  = ;  {路径名错误}
ERROR_BAD_FORMAT      = ; {EXE 文件无效}
SE_ERR_SHARE          = ; {发生共享错误}
SE_ERR_ASSOCINCOMPLETE = ; {文件名不完全或无效}
SE_ERR_DDETIMEOUT      = ; {超时}
SE_ERR_DDEFAIL        = ; {DDE 事务失败}
SE_ERR_DDEBUSY        = ; {正在处理其他 DDE 事务而不能完成该 DDE 事务}
SE_ERR_NOASSOC        = ; {没有相关联的应用程序} //ShowCmd 参数可选值:
SW_HIDE            = ;  {隐藏}
SW_SHOWNORMAL      = ;  {用最近的大小和位置显示, 激活}
SW_NORMAL          = ;  {同 SW_SHOWNORMAL}
SW_SHOWMINIMIZED  = ;  {最小化, 激活}
SW_SHOWMAXIMIZED  = ;  {最大化, 激活}
SW_MAXIMIZE        = ;  {同 SW_SHOWMAXIMIZED}
SW_SHOWNOACTIVATE  = ;  {用最近的大小和位置显示, 不激活}
SW_SHOW            = ;  {同 SW_SHOWNORMAL}
SW_MINIMIZE        = ;  {最小化, 不激活}
SW_SHOWMINNOACTIVE = ;  {同 SW_MINIMIZE}
SW_SHOWNA          = ;  {同 SW_SHOWNOACTIVATE}
SW_RESTORE        = ;  {同 SW_SHOWNORMAL}
SW_SHOWDEFAULT    = ; {同 SW_SHOWNORMAL}
SW_MAX            = ; {同 SW_SHOWNORMAL}

1、如果命令中的路径包含空格,要把路径去掉头尾用双引号包含起来。


例:strPath = “”D:\\\"te st\\\"test.exe;(用“\”进行字符转义)



2、用变量传命令的时候,要在命令字符开始加上"/c",不然命令不会执行。


例:strCommand = "/c " + "date";


ShellExecute(NULL, "open", "cmd", strCommand, NULL, SW_SHOW);



3、用SW_HIDE使cmd窗口静默执行


例:ShellExecute(NULL, "open", "cmd", strCommand, NULL, SW_HIDE);



4、命令行执行结果可以使用">"来保存到文件。


例:ShellExecute(NULL, "open", "cmd", "/c date >D:\\test.txt", NULL, SW_HIDE);



5、通过对比输出文件进行结果分析。



6、strCommand不支持直接使用..\,要使用相对路径可以用tempdir来实现。


例:假设text.txt在test.exe的上一层目录中,ShellExecute(NULL, "open", "cmd", "/c D:\\test\\test.exe "tempdir\\..\\..\\text.txt >D:\\test.txt", NULL, SW_HIDE);

 

如何在程序里模拟在cmd里用管理员权限运行一条指令的更多相关文章

  1. win8中 cmd直接以管理员权限运行

    一.组合键 WIN+X   二.锁定到任务栏,方便以后快速启动     三.控制面板->控制中心     四.更改用户账户控制设置--调到最低 好了,点击任务栏的命令提示符

  2. C#启用管理员权限运行程序

    方法一:关闭程序重新请求打开 static class Program { [STAThread] static void Main() { Application.EnableVisualStyle ...

  3. C#程序以管理员权限运行

    原文:C#程序以管理员权限运行 C#程序以管理员权限运行 在Vista 和 Windows 7 及更新版本的操作系统,增加了 UAC(用户账户控制) 的安全机制,如果 UAC 被打开,用户即使以管理员 ...

  4. C#程序以管理员权限运行【我采用了第二种,比较好用】

    在Vista 和 Windows 7 及更新版本的操作系统,增加了 UAC(用户账户控制) 的安全机制,如果 UAC 被打开,用户即使以管理员权限登录,其应用程序默认情况下也无法对系统目录.系统注册表 ...

  5. 【转】 C#程序以管理员权限运行

    C#程序以管理员权限运行在Vista 和 Windows 7 及更新版本的操作系统,增加了 UAC(用户账户控制) 的安全机制,如果 UAC 被打开,用户即使以管理员权限登录,其应用程序默认情况下也无 ...

  6. C#程序以管理员权限运行(ZT)

    本文转载:http://www.cnblogs.com/Interkey/p/RunAsAdmin.html 在Vista 和 Windows 7 及更新版本的操作系统,增加了 UAC(用户账户控制) ...

  7. C#程序 -- 以管理员权限运行

    阅读目录 一.判断程序是否以管理员身份运行 C#程序以管理员权限运行 在Vista 和 Windows 7 及更新版本的操作系统,增加了 UAC(用户账户控制) 的安全机制,如果 UAC 被打开,用户 ...

  8. 管理员权限运行-C#程序

    C#程序以管理员权限运行 在Vista 和 Windows 7 及更新版本的操作系统,增加了 UAC(用户账户控制) 的安全机制,如果 UAC 被打开,用户即使以管理员权限登录,其应用程序默认情况下也 ...

  9. bat代码中判断 bat是否是以管理员权限运行,以及自动以管理员权限运行CMD BAT

    · bat 代码中判断bat是否是以管理员权限运行,以及自动以管理员权限运行CMD BAT 一.判断bat是否是以管理员权限运行 @echo off net.exe session >NUL & ...

随机推荐

  1. Unity3D中Console控制台的扩展

    Assert Store上有一个Editor Console Pro,功能非常全面,百度也能搜到破解.如果有需要建议使用,不要再造车轮 起初因为自带Console功能太弱,有不少可以提升空间.于是尝试 ...

  2. Duilib 实现窗口点击关闭确认退出提示

    此功能是记住用户的操作,在用户点击关闭时是真退出程序还是最小化到托盘,我们常见的PC客户端都有此功能,例如:IMO客户端.网易云音乐 我自己的项目中也要实现此功能,在此总结一下,最终效果: .h文件 ...

  3. AJAX的问题

    1.什么是AJAX AJAX即"Asynchronous Javascript And XML"(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术. A ...

  4. linux 双网卡实现

    linux实现双网卡,在虚拟机中创建一个新网卡,NAT方式连接,其中eth0设置为连接外网,目前eth0为自动分配状态,所以将代码注释掉了,eth1设置为连接内网.

  5. SQL&&LINQ:左(外)连接,右(外)连接,内连接,完全连接,交叉连接,多对多连接

    SQL: 外连接和内连接: 左连接或左外连接:包含左边的表的所有行,如果右边表中的某行没有匹配,该行内容为空(NULL) --outer jion:left join or left outer jo ...

  6. 解决JSP路径问题的方法(jsp文件开头path, basePath作用)

    原文:http://blog.csdn.net/mingxunzh/article/details/4627185 在JSP中的如果使用 "相对路径"  则有可能会出现问题. 因为 ...

  7. java mail发送邮件

    最近做了自动发送邮件功能,带附件的:需要的jar包有

  8. 0010 Linux 目录操作命令

    01.更改目录 cd  /  返回根目录 cd ~  返回用户根目录 cd -  返回上个操作目录目录 ,等同于cd $OLDPWD 02.查看工作目录 pwd 03.创建目录 mkdir 目录名 0 ...

  9. 利用SVN进行任意文件对比

    都知道SVN可以比较已经上传的文件的内容,看到两个文件有什么不同的地方. 但是有时候并不想上传想要比较的文件,能不能利用SVN这样一个功能去比较别的两个文件呢? 琢磨来琢磨去, 发现只要在资源管理器里 ...

  10. mysql 配置 utf8 依然乱码

    mysql 乱码问题排除方案: 1.检查数据库及数据表是不是utf8字符集 2.查看一下jdbc.properties配置的数据库url 是否配置了characterEncoding=UTF-8或者在 ...