2016-05-26 18 views
0

So, ich habe das häufige Problem, dass jeder scheint zu versuchen, eine Batch-Datei auf einem Netzlaufwerk als Administrator gespeichert ausführen. Ich habe das Internet durchforstet und es gibt einige "Workarounds", aber ich bin mir nicht sicher, wie ich sie anwenden soll, wenn ich überhaupt kann.Batch: Ausführen als Administrator von zugeordnetem Netzlaufwerk

Tatsächliche Aufgabe: Stapeldatei (lässt diesen Stapel # 1 aufrufen), um eine Datei "mms.cfg" von einem Netzlaufwerk (dasselbe Verzeichnis wie Stapel) zu system32 und syswow64 zu kopieren. Natürlich sind diese Ordner geschützt und müssen daher als Administrator ausgeführt werden. Wenn Sie jedoch als Administrator ausgeführt werden, ist das zugeordnete Netzlaufwerk für das Konto "admin" und die Stapel-Krater nicht vorhanden.

In dieser bestimmten Instanz führt Batch # 1 eine automatische Flash-Installation aus. Danach muss eine Konfigurationsdatei in die oben genannten geschützten Ordner kopiert werden, um die automatische Update-Funktion zu deaktivieren, da unsere Standardbenutzer die Updates nicht ausführen können, über die sie sonst blitzen würden (warum kann Adobe nicht einfach einen Schalter zu ihrem hinzufügen) Installer, um diese Funktion auszuschalten?).

Was ich versucht habe: Ich habe die Arbeit um zu sehen EnableLinkedConnections=1 in der Registrierung festgelegt, aber ich brauche diese Batchdatei auf zahlreiche PCs in einem Netzwerk bereitstellen und kann nicht diesen Registrierungsschlüssel auf jedem ändern.

Ich habe auch versucht, das Verzeichnis neu zuordnen, nachdem ich als Administrator ausgeführt habe. Nochmals, die Batch-Krater, seit es von einem zugeordneten Netzlaufwerk ausgeführt wird und "Administrator" weiß nicht, dass dieses Laufwerk existiert, also der Absturz, bevor ich die Möglichkeit habe, das Laufwerk zu mappen (über pushd oder was auch immer).

Ich kann nicht einfach um die Charge auf dem lokalen PC kopieren Sie es jedes Mal ausgeführt wird: 1) es andere Aufgaben tut (startet zwei Installateure), 2) die Batch-Datei selbst ran aus einer anderen Charge wird (Bezeichne als Batch # 2), das eine Liste von Softwareaktualisierungen herunterfährt und stillschweigend anwendet, 3) Dies ist, um eine Reihe von Updates anzuwenden, wo ich (Domänenadministrator) in jedem PC anmelden und Batch # 2 zum Aktualisieren ausführen würde eine Reihe von Programmen (Domäne automatisch Verzeichnisse zu Updates, so dass ich zu I: \ Updates navigieren und es ausführen).

Endergebnis Ich hoffe auf: Im Wesentlichen läuft dies auf, wie ich einen Stapel auf einem zugeordneten Netzlaufwerk mit Administratorrechten gespeichert ausführen? Gibt es eine Möglichkeit, dies auf einem beliebigen Netzwerkcomputer zu tun, oder bin ich darauf beschränkt, die Konfigurationsdatei für jeden PC, den ich aktualisieren möchte, manuell auf system32 und syswow64 zu kopieren?

TLDR: Führen Sie Batch auf einem zugeordneten Netzlaufwerk als Admin ohne es Krater gespeichert.

Wenn ich unklar war oder weitere Informationen geben muss, werde ich mein Bestes geben, um das zu überprüfen. Vielen Dank im Voraus für jede Hilfe!


UPDATE - Also, ich war in der Lage EnableLinkedConnections=1 über unsere Computer in der Domäne über GPO gesetzt zu bekommen. Allerdings habe ich ein anderes interessantes Problem bemerkt: Wenn Sie mit der rechten Maustaste auf & als Administrator ausführen, läuft es gut. Der folgende Code zum automatischen Anfordern von Administratorrechten schlägt jedoch fehl, wenn Sie das Skript einfach ausführen. Vielleicht vermisse ich einfach etwas Einfaches?

Nochmals vielen Dank im Voraus für jede Hilfe!

:: BatchGotAdmin 
:------------------------------------- 
REM --> Check for permissions 
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system" 

REM --> If error flag set, we do not have admin. 
if '%errorlevel%' NEQ '0' (
    echo Requesting administrative privileges... 
    goto UACPrompt 
) else (goto gotAdmin) 

:UACPrompt 
    echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs" 
    set params = %*:"="" 
    echo UAC.ShellExecute "cmd.exe", "/c %~s0 %params%", "", "runas", 1 >> "%temp%\getadmin.vbs" 

    "%temp%\getadmin.vbs" 
    del "%temp%\getadmin.vbs" 
    exit /B 

:gotAdmin 
    pushd "%CD%" 
    CD /D "%~dp0" 
:-------------------------------------- 
+0

Können Sie UNC-Pfade anstelle von zugeordneten Laufwerksbuchstaben verwenden? Oder erhöhen Sie und ordnen Sie das benötigte Laufwerk * ​​vor * laufenden Batch # 2? Ich bin verwirrt, warum nur dieses eine Update Administratorrechte benötigt. Möglicherweise möchten Sie auch die Verwendung von 'psexec 'untersuchen, anstatt Remote Desktop auf jedem Computer zu installieren und die Updates manuell zu starten. –

+0

Laufwerke werden vom Sicherheitstoken zugeordnet. Administratoren haben zwei (normal und erhöht). Sie müssen als Administrator ein zugeordnetes Laufwerk für Administratoren zuordnen. Jedoch sind gemappte Laufwerke eine alte Kompatibilitätssache. Verwenden Sie einfach UNC '\\ Server \ Freigabename \ Ordner \ Datei.ext'. Siehe auch 'wmic /node:computerlist.txt Prozessaufruf create" c: \ someprogram.exe "' –

+0

@HarryJohnston & Noodles - Ich würde es vorziehen, nicht über UNC-Pfade zuzugreifen, da ich dies auf vielen Maschinen und bereits tun muss Wenn dieses Verzeichnis als Teil des Logins zugeordnet wird, ist das nützlich (vielleicht habe ich Ihre Frage missverstanden?). Was ich mache, ist jeden PC einzeln einzuloggen, zu navigieren und dieses Skript auszuführen und würde es wirklich vorziehen, nicht jedes Mal über UNC zu navigieren. Eine Randnotiz - wie ordne ich Laufwerke als Admin, esp. In meiner aktuellen Situation (laufendes Skript, auf das über ein zugeordnetes Laufwerk zugegriffen wird - navigieren Sie zu "I: \ updates" anstelle von "\\ server \ sharename \ folder \ updates", um batch2.bat auszuführen)? – RisaAudr

Antwort

0

Wenn jemand anderes in dieses Problem ausgeführt wird (wie ich) war meine Abhilfe für den UNC-Pfad zu gehen und eine Verknüpfung zu der Batchdatei erstellen. Wenn Sie dann die Verknüpfung als Administrator vom zugeordneten Laufwerk ausführen, wird die Stapeldatei als UNC-Pfad gestartet.