Mir ist klar, dass diese Frage bereits mit einer vollkommen guten Auflösung beantwortet wurde, die ursprünglich für Windows entwickelt wurde und daher die kompatibelste sein sollte, und ich stimme vollkommen zu.
Ich wollte auch sagen, dass ich mit @ splattnes Kommentar nicht einverstanden bin (aber nicht mit seiner tatsächlichen Antwort) - dass die Auflösung in dem anderen Thread, auf den verwiesen wird, die Anerkennung verdient. Diese Antwort beinhaltet das Ausführen des Skripts als ein anderer Benutzer (SYSTEM), was so ziemlich dem Gewähren des Skriptstammzugriffs entspricht. Es schlägt auch für Jobs wie ROBOCOPY
(wie von John Rennie angegeben) fehl , die Netzwerkzugriff erfordern.
Ich habe es noch nie versucht CMDOW
, aber ich möchte eine andere ähnliche Auflösung anbieten, die [obwohl sie unter Windows nicht nativ installiert ist] für die meisten Versionen hoch portierbar ist und sowohl in der 32- als auch in der 64-Bit-Version verfügbar ist NirCmd .
NirCmd ist ein sehr leistungsfähiges Tool mit unzähligen Optionen. Das nützlichste ist meiner Meinung nach die Möglichkeit, versteckte Befehlsfenster zu starten, indem Sie einfach Folgendes ausführen:
c:\path\to\nircmd.exe exec hide "c:\path\to\mybat.bat"
Aus dem exec
Abschnitt der NirCmd-Befehlsreferenz :
exec [show/hide/min/max] [application + command-line]
Führt eine Anwendung aus und gibt optional einen oder mehrere Befehlszeilenparameter für die ausgeführte Anwendung an. Der Parameter [show / hide / min / max] gibt an, ob die ausgeführte Anwendung angezeigt wird oder nicht. Wenn 'hide' angegeben wird, ist die ausgeführte Anwendung für den Benutzer nicht sichtbar. Wenn 'max' angegeben ist, wird das laufende Anwendungsfenster maximiert. Wenn 'min' angegeben wird, wird das laufende Anwendungsfenster minimiert.
BEARBEITEN:
Ich habe versucht, einen ROBOCOPY
Job auszuführen und habe die Methode in dieser Antwort ausprobiert, und sie hat auch nach dem Bearbeiten der Netzwerkzugriffsberechtigungen nicht funktioniert. Ich habe versucht, auf das Skript zu doppelklicken, und konnte es nicht zum Laufen bringen, sondern nur unter einer Eingabeaufforderung mit erhöhten Rechten ausführen. Ich habe eine Verknüpfung zur Batch-Datei erstellt und sie als Administrator ausführen lassen und konnte sie durch Doppelklicken ausführen, aber die Methode, die ich letztendlich gewählt habe, war, sie versteckt als SYSTEM auszuführen (ich weiß, ich weiß). - aber es funktioniert mit ROBOCOPY
, was es wert ist, solange die Batch-Datei die richtigen Berechtigungen hat.
EDIT 2:
Aus irgendeinem Grund würde es nicht als SYSTEM funktionieren (wahrscheinlich das zuvor erwähnte Netzwerkzugriffsobjekt) - ich habe dies erst bemerkt, nachdem ich ROBOCOPY
das / L-Flag tatsächlich ausgeführt habe , was im Grunde genommen nur eine Simulation ist und [anscheinend] nicht Stellen Sie eine Verbindung zum Remote-System her, aber wenn ich die Batch-Datei mit den höchsten Berechtigungen ausführe und das Kontrollkästchen "Versteckt" aktiviere, kann ich sie trotzdem als angemeldeter Benutzer im Hintergrund ausführen, ohne dass ein Befehlsfenster angezeigt wird .