运行从另一个批处理文件批处理文件作为admisitrator

问题描述:

我需要运行一个批处理文件(SETUP.BAT),它会调用另一个批处理文件(make_dir.bat)将在“C创建一个文件夹:\ Program Files文件“ 目录。这是一个内部安装程序。所有用户都将以其用户名登录,但具有本地管理员权限。我尝试了两种方法,但都没有奏效。运行从另一个批处理文件批处理文件作为admisitrator

方法1:

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

方法2:

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

其中make_dir.bat是

md "%programfiles%\mySoftware" 

这要求当前使用rname和密码,但以某种方式失败后。我检查了所有用户都具有本地管理员权限,并且可以在他们的programfiles文件夹中手动创建文件夹。

感谢您的帮助。

我用这样的脚本来运行.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 method 
// iRetVal = Shell.ShellExecute(sFile, [ vArguments ], [ vDirectory ], [ vOperation ], [ vShow ]) 
// If (vShow==1) open the application with a normal window. 
// Check for Vista and upper. 
if (major_ver >= 6) { 
    // Request admin permission. 
    objShell.ShellExecute(batch, curdir, "", "runas", 1); 
} else { 
    objShell.ShellExecute(batch, curdir); 
} 
+0

它适用于Vista和更大。 WinXP的一些如何有问题,不记得正是... – gavenkoa 2012-08-07 08:48:12

+0

用户将被提示输入管理员权限(是/否对话框)... – gavenkoa 2012-08-07 08:49:00