【问题标题】:running a batch file from another batch file as an admisitrator以管理员身份从另一个批处理文件运行批处理文件
【发布时间】:2012-08-07 05:00:27
【问题描述】:

我需要运行一个批处理文件 (setup.bat),它会调用另一个批处理文件 (make_dir.bat),它将在“C:\Program Files”目录中创建一个文件夹。这适用于内部安装程序。所有用户都将使用他们的用户名登录,但将具有本地管理员权限。我尝试了两种方法,但都不起作用。

方法一:

SET PRGFILES=%programfiles%\mySoftware
SET admin=N
SET domain=%USERDOMAIN%\
IF /i "%domain%" EQU "%computername%\" set domain=
SET user=%domain%%username%
FOR /f "Tokens=*" %%a IN ('net localgroup administrators^|find /i "%user%"') DO SET admin=Y
IF "%admin%"=="Y" (
    MD "%PRGFILES%"
)

上面写着Access is denied

方法二:

runas /user:%Username% shell\make_dir.bat

make_dir.bat 在哪里

md "%programfiles%\mySoftware"

这会询问当前的用户名和密码,但之后不知何故失败了。我检查了所有用户都拥有本地管理员权限,并且可以在他们的programfiles 文件夹中手动创建一个文件夹。

感谢您的帮助。

【问题讨论】:

    标签: batch-file installation administrator program-files


    【解决方案1】:

    我使用这样的脚本以管理员身份运行.bat文件,使用JScript:

    var batch = "fixuac.bat" var fso = new ActiveXObject("Scripting.FileSystemObject"); var curdir = fso.GetParentFolderName(WScript.ScriptFullName); var wbemFlagReturnImmediately = 0x10; var wbemFlagForwardOnly = 0x20; var objWMIService = GetObject("winmgmts:\\\\.\\root\\CIMV2"); // var objWMIService = GetObject("winmgmts:" + "{impersonationLevel=impersonate}!\\" + "." + "\root\cimv2"); var colItems = objWMIService.ExecQuery("SELECT * FROM Win32_OperatingSystem", "WQL", wbemFlagReturnImmediately | wbemFlagForwardOnly); var enumItems = new Enumerator(colItems); var objItem = enumItems.item(); // http://en.wikipedia.org/wiki/Ver_(command) var major_ver = objItem.Version.split(".")[0]; var objShell = new ActiveXObject("shell.application"); // http://msdn.microsoft.com/en-us/library/windows/desktop/gg537745.aspx // Shell.ShellExecute 方法 // iRetVal = Shell.ShellExecute( sFile, [ vArguments ], [ vDirectory ], [ vOperation ], [ vShow ] ) // 如果 (vShow==1) 以普通窗口打开应用程序。 // 检查 Vista 和更高版本。 如果 (major_ver >= 6) { // 请求管理员权限。 objShell.ShellExecute(batch, curdir, "", "runas", 1); } 别的 { objShell.ShellExecute(batch, curdir); }

    【讨论】:

    • 它适用于 Vista 和更高版本。 WinXP 有什么问题,具体不记得了...
    猜你喜欢
    • 2013-02-25
    • 1970-01-01
    • 2023-03-26
    • 2012-10-06
    • 2013-05-29
    • 2013-09-16
    • 1970-01-01
    • 2015-02-09
    • 1970-01-01
    相关资源
    最近更新 更多