转自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. Volley获取网络图片使用总结

    参考资料 http://www.3fwork.com/b600/001956MYM002697/ //缓存 int cacheSize= 10 * 1024 * 1024; //声明一个新的Reque ...

  2. ReactJs入门教程

    现在最热门的前端框架有AngularJS.React.Bootstrap等.自从接触了ReactJS,ReactJs的虚拟DOM(Virtual DOM)和组件化的开发深深的吸引了我,下面来跟我一起领 ...

  3. hdu 5780 gcd

    题意:给定$x, n$满足$1 \leq x, n \leq 1000000$,求$\sum{(x^a-1,x^b-1)}$对$1e9+7$取模后的值,其中$1 \leq a, b \leq n$. ...

  4. C/C++ 宏中的 #、#@、##的作用

    宏中的# 功能是将其后面的宏参数进行字符串化操作(Stringizing operator), 简单说就是在它引用的宏变量的左右各加上一个双引号. #define STRING(x) #x 下面二条语 ...

  5. 关于SQLite数据库的作业

    数据库的SQL预览代码我忘了复制了 只能截图 Students表: Course表: Score表: Teachcer表:

  6. winform开发框架之模块维护

    前言:模块维护试图解决的问题, 模块加载只用MEF的方式: MEF(Managed Extensibility Framework)是一个用于创建可扩展的轻型应用程序的库. 应用程序开发人员可利用该库 ...

  7. 配置eclipse集成开发环境_编译_调试

    1. 因为eclipse是基于Java运行,所以在运行Eclipse之前,需要安装Java SE,对于Java SE,需要Java SE6 JRE系列的版本,可以在这个位置下载: Java SE 6只 ...

  8. 调度系统任务创建---Git部署项目(一)

    有任务要上线时,需要将任务所在的项目代码从git上取出,在调度系统中编译打包,分发大任务执行服务器上. 具体的任务可以参考:http://192.168.53.100:8090/jenkins/vie ...

  9. BBC.万物与虚无.Everything.and.Nothing

    这么有意思的纪录片怎么能错过 待续~

  10. c#遍历并判断实体或类的成员属性

    c#的Attribute有些类似java中的annotation,可以方便地在类成员中做修饰/限制作用. Demo: class ss { public stat BsonDocument Itera ...