2012-08-07 220 views
3

我需要運行一個批處理文件(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文件夾中手動創建文件夾。

感謝您的幫助。

回答

2

我用這樣的腳本來運行.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