none
怎样在C#下实现以管理员身份调用cmd RRS feed

  • 问题

  • 大家好!

    我最近写程序时比较喜欢调用cmd命令行,可是在win7下运行程序调用cmd,在cmd窗口中运行 diskpart 时弹出UAC(用户帐户控制)窗口,

    怎样在不关闭UAC的情况下,运行程序时不弹出这个窗口??如有代码解释更好,谢谢!

    2012年4月8日 3:00

答案

全部回复

  • 你看下这个帖子:这里有你要的答案

    http://social.msdn.microsoft.com/Forums/zh-CN/visualcshartzhchs/thread/adf321ff-da7e-49e2-b788-49761fe9a966/


    http://blog.csdn.net/zx13525079024

    2012年4月8日 6:08
  • 起初我以为是我的代码写错了,然后我尝试里一下那个帖子的代码,在win7不是Administrator账户下调试程序,压根就不能用,可能是我又写错啦吧,不过还是有学了一个starInfo.verb属性,还是挺好的。我怀疑他们给的verb的属性值不对
    2012年4月9日 4:58
  • Hi 李仁宾,

    首先,如果不是Administrator组下的帐号是肯定不能运行需要Administrator权限的程序的. 权限升级时UAC的行为和Local Security Policy有关, 可以通过这个方式来在不降低UAC级别的情况下避免UAC的弹出, 前提是必须是Administrator group帐号里的成员:

    1. 开始>>运行>>输入 secpol.msc”.
    2. 展开Local Policies>>点击Security options.
    3. 在右侧找到并双击 ”User Account Control: Behavior of the elevation prompt for administrators in Admin Approval Mode”.
    4. 在下拉菜单中选择 ”Elevate without prompting”.
    5. 点击 Apply.

    注意: 建议在调试程序之后还原成原来的设置.

    Thanks,


    Alexander Sun [MSFT]
    MSDN Community Support | Feedback to us

    2012年4月9日 8:18
  • 在win7非Administrator帐户下(装操作系统时的帐户)下 ,  运行程序前   以管理员身份运行, 然后程序在后台调用cmd时就没有问题啦,看来不是这里的问题,怀疑还是那个帖子里面的verb属性值的问题啦

    2012年4月9日 8:46
  • Hi 李仁宾,

    ProcessStartInfo实例的Verb属性来源于实例的Verbs属性, Verbs是一个string的数组. 这个数组是取决于FileName的指定文件的扩展名. 你可以使用这个简单的代码来看下Verbs数组里的值.

         ProcessStartInfo Info = new ProcessStartInfo();

                Info.FileName = "cmd.exe";

                Info.Arguments = "/c C:\\Windows\\System32\\cmd.exe";

                Int32 i = 0;

                foreach (String verb in Info.Verbs)

                {

                    // Display the possible verbs.

                    Console.WriteLine("  {0}. {1}", i.ToString(), verb);

                    i++;

                }

    详细请参考: http://msdn.microsoft.com/en-us/library/system.diagnostics.processstartinfo.verb.aspx

    以及: http://msdn.microsoft.com/en-us/library/system.diagnostics.processstartinfo.verbs.aspx

    希望对有你有帮助.

    Best Regards,


    Alexander Sun [MSFT]
    MSDN Community Support | Feedback to us

    • 已标记为答案 李仁宾 2012年4月16日 14:46
    2012年4月12日 3:15