【问题标题】:Can't run file as Admin but OK if I run as a normal user无法以管理员身份运行文件,但如果我以普通用户身份运行,则可以
【发布时间】:2017-07-21 11:59:15
【问题描述】:

编辑:试过这个:C:\WINDOWS\system32>runas /user:gabs-pc\gabs-pc "J:\TI\...\Editor_PDF\editor_pdf.exe"

得到这个错误:“系统无法找到指定的文件。”

很难在主题标题上暴露我的问题......

嗯...我有一个要运行的 .exe 文件,该文件通过名为 J:\ 的本地网络位于共享硬盘驱动器中。

如果我在给定路径中以普通用户身份打开 cmd 提示符并尝试使用以下命令执行 .exe 文件:

"J:\TI\Estágio\gabriel\Editor de PDF\Editor PDF\editor_pdf.exe" param1 param2 param3

它工作正常。但是,当我尝试从同一台计算机以管理员身份打开 cmd 提示符运行完全相同的文件时,我收到以下错误:

'"J:\TI...\Editor PDF\editor_pdf.exe"' 不是内部或外部命令、可运行程序或批处理文件。

我想知道如何以管理员身份执行该文件,或者以当前/普通用户身份运行该文件的单行解决方法。

评论:如果你们中的一些人问自己“为什么不以普通用户的身份打开 cmd?”。我正在尝试从另一个只能以管理员身份运行 cmd 的程序调用此程序,这就是原因。

【问题讨论】:

  • this file is in a shared hard drive - 每个用户共享驱动器 - 管理员用户不查看普通用户共享驱动器,反之亦然
  • 如果这是一个 Windows 域,则本地管理员没有网络文件的管理员权限,而您需要具有域管理员权限

标签: windows cmd administrator


【解决方案1】:

您需要先将网络驱动器路径转换为其真实的 UNC 路径。正如@RbMm 所说,网络驱动器是每次使用的配置。

如果你坚持cmd,你可以使用wmic path win32_mappedlogicaldisk get DeviceID, ProviderName来检索目标的真实路径。

您也可以使用Winapi WNetGetConnection 来检索驱动器的路径。

该过程应该在管理员上下文中完成。如果不能,则需要使用CreateProcessAsUser 从其他用户的角度检索信息。

伪代码:

char path[260] = {0};
WNetGetConncetion ("J:", path, 260);
WinExec ("\"" + path + "\\TI\\Estágio\\gabriel\\Editor de PDF\\Editor PDF\\editor_pdf.exe"
       + "\" " + param1 + " " + param2 + " " + param3, SW_HIDE);

附加信息:

【讨论】:

    猜你喜欢
    • 2011-10-03
    • 2017-05-19
    • 1970-01-01
    • 2016-06-07
    • 1970-01-01
    • 1970-01-01
    • 2016-10-06
    • 1970-01-01
    • 2013-09-06
    相关资源
    最近更新 更多