【问题标题】:Being prompted for uac using c# process使用 c# 进程提示 uac
【发布时间】:2020-02-11 08:27:41
【问题描述】:

我正在尝试在控制台应用程序中运行 exe。系统提示我输入 UAC 输入管理员凭据。问题是我只有读取和执行权限。我无法提供完全权限,因为它在服务器上。

using (Process process = new Process())
{
    process.StartInfo.Verb = "runas";
    process.StartInfo.FileName = ImgToDjvuPath;
    process.StartInfo.Arguments = string.Format("\"{0}\" -profile \"{1}\" \"{2}\"  \"{3}\"", ImgToDjvuPath, "fine200up", localNewDjvuFile, localNewDjvuFile);
    process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
    process.StartInfo.CreateNoWindow = true;
    process.Start();
    process.WaitForExit(10 * 60 * 1000);

}

我希望能够运行此代码并使其正常工作而不会被提示输入 uac。

这就是为什么我不喜欢堆栈溢出,你问一个具体的问题却很少得到具体的答案。然后被标记为提出有效问题。我发帖后大约 2 分钟就知道了。感谢那些真正尝试提供帮助的建设性和帮助的人。

【问题讨论】:

  • 不是某处的windows设置吗?喜欢here
  • 如果您不想以管理员身份执行实用程序,为什么要使用 runas 动词?
  • 如果您没有管理员权限,则无法运行类似管理员的操作。
  • 如果可执行文件需要提升才能运行,您必须从已经具有提升的进程中执行可执行文件,或者您需要在出现提示时手动提升进程。
  • 它没有,读取和执行应该足够了

标签: c# console-application uac


【解决方案1】:

如果你想启动一个新进程并且你希望进程以管理员身份运行,你需要RunAs动词。

仅当流程调用者没有管理权限时才会显示 UAC 提示。

对于您的情况,如果您不希望进程以管理员身份执行,那么您应该从代码中删除以下行:

process.StartInfo.Verb = "runas";

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-16
    • 1970-01-01
    • 2012-06-17
    • 1970-01-01
    • 1970-01-01
    • 2015-10-28
    相关资源
    最近更新 更多