Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst Batch unter Windows 7 - generelles Problem

Mitglied: thecaptain

thecaptain (Level 1) - Jetzt verbinden

10.02.2010 um 15:39 Uhr, 16334 Aufrufe, 10 Kommentare

Hallo,

ich versuche grade eine kleine Batch zu schreiben, die, unter anderem, eine Datei in den allusers-Autostart unter Win7 ablegen soll. Da die Benutzerkontensteuerung den Zugriff einschränkt, soll er prüfen, ob die Batch als Admin ausgeführt wurde (sprich das Kopieren überhaupt klappen kann). Ich habe mir eine Batch gebaut um den Ablauf zu simulieren. Leider verhält sich das Ding wirklich merkwürdig. Ich teste das hier unter Window 7 Professional x64, eigentlich dürfte es daran aber nicht liegen (korrigiert mich bitte, sollte ich falsch liegen).

01.
@echo off
02.

03.
SET autostart=%ALLUSERSPROFILE%\Microsoft\Windows\Start Menu\Programs\Startup
04.

05.
XCOPY /C /F /R /Y TEST.cmd "%autostart%"
06.
IF %ERRORLEVEL% NEQ 0 (ECHO ACHTUNG - %ERRORLEVEL%) 
07.
IF %ERRORLEVEL% EQU 0 (ECHO Sollte geklappt haben - %ERRORLEVEL%)
08.

09.
ECHO.
10.
ECHO.
11.
PAUSE
Ausführen mit normalen Rechten:
Zugriff verweigert
0 Datei(en) kopiert
Sollte geklappt haben - 0
Zugriff verweigert habe ich erwartet, ist also OK. Der Errorlevel sollte aber doch grade ungleich 0 sein wenn es einen Fehler gab, oder???

Ausführen als Administrator:
Datei TEST.cmd nicht gefunden
0 Datei(en) kopiert
ACHTUNG - 4
DAS verstehe ich ja nun gar nicht. Die Datei ist absolut 100%ig vorhanden, Zugriffsrechte sind gegeben, Speicherplatz ist massig da, etc.

Leider muss es eine Batch sein, da das Ding auch auf unseren alten Möhren laufen muss. Daher, und weil ich mich damit nicht auskenne, kommt Powershell nicht in Frage.
Mitglied: Pjordorf
10.02.2010 um 15:46 Uhr
Hallo thecaptain,

01.
rem @echo off
02.
dir
03.
pause
Fehler. Mach das "Echo aus" ertsmal aus, dann siesht du auch etwas.

dann wirst du feststellen, das dein Verzeichniss jeweils ein anderes ist.

Ausführen mit normalen Rechten:
> Zugriff verweigert
> 0 Datei(en) kopiert
Richtig so

Ausführen als Administrator:
> Datei TEST.cmd nicht gefunden
Richtig

DAS verstehe ich ja nun gar nicht. Die Datei ist absolut 100%ig vorhanden, Zugriffsrechte sind gegeben, Speicherplatz ist massig
da, etc.
Nur leider an der falschen Stelle, von deiner Batchdate aus betrachtet.

Peter
Bitte warten ..
Mitglied: DerWoWusste
10.02.2010 um 15:56 Uhr
Hi.

Wann soll denn die Batch laufen? In Startskripten stört die UAC nicht. Startest Du sie manuell oder aus einem anderen Programm heraus, muss sie nicht nur als Admin, sondern auch hochgestuft (=elevated) gestartet werden.
Bitte warten ..
Mitglied: thecaptain
10.02.2010 um 16:22 Uhr
Zitat von DerWoWusste:
Wann soll denn die Batch laufen? In Startskripten stört die UAC nicht. Startest Du sie manuell oder aus einem anderen
Programm heraus, muss sie nicht nur als Admin, sondern auch hochgestuft (=elevated) gestartet werden.

Bei einigen speziellen Rechnern wird es manuell ausgelöst, ansonsten wollte ich die Batch später in unser Kixstart-Skript mit einbinden, das läuft aber erst nach der Benutzeranmeldung durch, also dürfte die UAC Probleme machen.

Zitat von Pjordorf:
>
01.
rem @echo off
02.
> dir
03.
> pause
04.
> 
Fehler. Mach das "Echo aus" ertsmal aus, dann siesht du auch etwas.
dann wirst du feststellen, das dein Verzeichniss jeweils ein anderes ist.
> Ausführen als Administrator:
> > Datei TEST.cmd nicht gefunden
Richtig
Ok, Ok, I see. Als Administrator ausgeführt geht das Ding von dem Pfad %SYSTEMROOT%\system32 aus. Das erklärt den Fehler natürlich - GUTER Hinweis. Allerdings verstehe ich nicht ganz, was das "dir" an der Stelle bringen sollte, aber egal. Schon mal ein wichtiger Ansatzpunkt. Gleich mal ausprobieren...

Aber den merkwürdigen "Errorlevel" mit normalen Rechten kann ich mir immer noch nicht erklären.
Bitte warten ..
Mitglied: 60730
10.02.2010 um 16:32 Uhr
Moin,

Allerdings verstehe ich nicht ganz, was das "dir" an der Stelle bringen sollte

naja - bei Ordnern - die nicht 80+ Dateien/Unterordner haben - hätte das was gebracht - um genauer zu sein...
01.
rem @echo off
02.
dir /p
03.
pause
04.
rem usw.
wäre dann der Zaunpfahl, an den Du dich anlehnen kannst.

Aber den merkwürdigen "Errorlevel"...

naja der ist wie immer - würdig um Ihn sich zu merken...

01.
XCOPY /C /F /R /Y TEST.cmd "%autostart%" 
02.
if not exist "%autostart%\TEST.cmd" echo hier stimmt was nicht
... oder so ähnlich passt viel besser.
Bitte warten ..
Mitglied: Pjordorf
10.02.2010 um 16:55 Uhr
hallo thecaptain,

> Aber den merkwürdigen "Errorlevel"...

01.
> XCOPY /C /F /R /Y TEST.cmd "%autostart%" 
02.
> 
Du verwendest den Parameter /C (Ignore errors laut technet). Ohne diesen sollte es dann gehen. Also

01.
XCOPY /F /R /Y TEST.cmd "%autostart%"
02.
IF %ERRORLEVEL% NEQ 0 (ECHO ACHTUNG - %ERRORLEVEL%)
03.
IF %ERRORLEVEL% EQU 0 (ECHO Sollte geklappt haben - %ERRORLEVEL%) 
Peter
Bitte warten ..
Mitglied: Biber
10.02.2010 um 18:35 Uhr
@Pjordorf

Zitat von Pjordorf:
Du verwendest den Parameter /C (Ignore errors laut technet).
Ohne diesen sollte es dann gehen. Also

Ja schon, wenn irgendein Delmenhorster Volkshochschulkurs die XCopy.exe implementiert hätte, dann ja.
Für die Redmonder XCopy-Variante und speziell die zurückgegebenen Errorlevel ist keinerlei Logik erkennbar.

Eher eine gewisse Gelassenheit..

Beispiel:
>xcopy d:\temp\Jibbet.Nich e:\  
Datei Jibbet.Nich nicht gefunden.
0 Datei(en) kopiert

>echo %errorlevel%
4

>xcopy d:\temp\Jibbet.Nich? e:\
Datei Jibbet.Nich? nicht gefunden.
0 Datei(en) kopiert

>echo %errorlevel%
0

>xcopy d:\temp\Jibbet.Nich e:\  /C
Datei Jibbet.Nich nicht gefunden.
0 Datei(en) kopiert

>echo %errorlevel%
4
Anmerkung:
- der Errorlevel 4 im Fall "Eine konkret angegebene Quell Datei" wie auch der Errorlevel 0 im zweiten Wildcard-Fall korrespondieren in keinster Weise mit der technet und/oder Windows-Dokumentation.

... Setzen von /C bedeutet wirklich nur /Continue, aber die Fehlercodes werden dennoch gesetzt.
Natürlich auch die, die immer falsch gesetzt werden

Grüße
Biber
Bitte warten ..
Mitglied: Pjordorf
10.02.2010 um 19:55 Uhr
@Biber,

ich kann dir da nicht widersprechen. Ich habe das auch so gesehen. Es geht hier aber noch um den fall, das die zu kopierende Datei im Pfad existiert, aber wegen fehlender Schreibrechte nicht angelegt werden kann. Da ist das Ergebniss bei xcopy dann ohne /C wieder richtig.

Die zu kopierende Datei ist nicht vorhanden, keine Schreibrechte im Zielordner
>XCOPY /C /F /R /Y D:\Temp\Jibbet.nich D:\Testing
Datei Jibbet.nich nicht gefunden.
0 Datei(en) kopiert
>Errorlog = 4

>XCOPY /F /R /Y D:\Temp\Jibbet.nich D:\Testing
Datei Jibbet.nich nicht gefunden.
0 Datei(en) kopiert
>Errorlog = 4
Die zu kopierende Datei ist vorhanden, keine Schreibrechte im Zielordner
>XCOPY /C /F /R /Y D:\Temp\Jibbet.nich D:\Testing
D:\Temp\Jibbet.Nich -> D:\Testing\Jibbet.Nich
Zugriff verweigert
0 Datei(en) kopiert
>Errorlog = 0
Hier das auszuwertende Ergebniss (keine Schreibrechte)
>XCOPY /F /R /Y D:\Temp\Jibbet.nich D:\Testing
D:\Temp\Jibbet.Nich -> D:\Testing\Jibbet.Nich
Zugriff verweigert
>Errorlog = 4
Zu kopierende Datei ist vorhanden, Schreibrechte im Zielordner vorhanden
>XCOPY /C /F /R /Y D:\Temp\Jibbet.nich D:\Testing
D:\Temp\Jibbet.Nich -> D:\Testing\Jibbet.Nich
1 Datei(en) kopiert
Errorlog = 0

>XCOPY /F /R /Y D:\Temp\Jibbet.nich D:\Testing
D:\Temp\Jibbet.Nich -> D:\Testing\Jibbet.Nich
1 Datei(en) kopiert
Errorlog = 0
Somit wird das fehlen der Schreibrechte bei xcop nur ohne /C im ERRORLEVEL auswertbar übergeben.

Peter
Bitte warten ..
Mitglied: Biber
10.02.2010 um 20:46 Uhr
Moin Pjordorf,

watt sind die tricky, diese RedmonderInnen.... *staun*

Punktuell coden die ja wie die Profis.... da kann ich gar nicht schnell genug hinterbatchen.

Du hast natürlich Recht... in dem Fall "Zieldatei kann nicht geschrieben werden" wirkt der Schalter /C auf das Errorlevel bzw. setzt es auf 0.

Viellecht sollten wir mal die TechNet-Doku ein bisschen ergänzen.

Grüße
Biber
Bitte warten ..
Mitglied: thecaptain
11.02.2010 um 09:02 Uhr
Hallo nochmal,

vielen Dank für die Hinweise. Ich habe die Batch jetzt ein wenig umgeschrieben, um mich nicht mehr auf diese *tollen* Errorlevel verlassen zu müssen.

Ist zwar nicht hübsch, aber funktioniert jetzt wenigstens:
01.
::@echo off
02.
SET autostart=%ALLUSERSPROFILE%\Microsoft\Windows\Start Menu\Programs\Startup
03.
SET quelle=D:\Softwaretests\Batch-Installer\2010-02-10
04.

05.
XCOPY /C /F /R /Y "%quelle%"\TEST.cmd "%autostart%"
06.
IF EXIST "%autostart%"\TEST.cmd (ECHO Hat geklappt)
07.
IF NOT EXIST "%autostart%"\TEST.cmd (ECHO ACHTUNG - Kein Admin!)
08.

09.
ECHO.
10.
ECHO.
11.
PAUSE
Man glaubt gar nicht, wie viel Zeit man mit einer so banalen Batch verplempern kann...
Bitte warten ..
Mitglied: DerWoWusste
11.02.2010 um 18:56 Uhr
Man glaubt gar nicht, wie viel Zeit man mit einer so banalen Batch verplempern kann...
... und dann stimmt's immer noch nicht ; )
Deine Adminprüfung berücksichtigt die Elevation doch gar nicht. Ein Admin ist erst elevated "richtig" Admin. Dein Test wird also auch bei allen Admins zurückgeben "Achtung - kein Admin", solange die UAC an ist.

Also lass die Prüfung sein und mach ein Startskript daraus - geht immer. Wenn es manuell ausgeführt werden soll, musst man es elevated starten (per Rechtsklick -> "als Administrator ausführen"). Kommt eine Kennwortabfrage, ist man nicht in der Admingruppe - ganz einfach.
Bitte warten ..
Ähnliche Inhalte
Festplatten, SSD, Raid

DiskWriteCache bei Stromausfall generell riskant?

gelöst Frage von CaptnemoFestplatten, SSD, Raid6 Kommentare

Ich habe mal eine etwas allgemeine Frage. Bei einem RAID-Controller mit BBU (BackupBatteryUnit) kann man generell den Schreibcache des ...

Switche und Hubs

HP-Procurve Switche generell

gelöst Frage von DocuSnap-DudeSwitche und Hubs3 Kommentare

Hallo, ich bin neu in einem unternehemn, welches HP Procurve-Layer2 Switche einsetzt. Wenn man aus der Cisco-Welt kommt ein ...

Batch & Shell

Windows 7: Problem mit CP in Batch

gelöst Frage von Maik87Batch & Shell3 Kommentare

Hallo zusammen, ich möchte mit einem Batch-Script unter Windows 7 ein wenig die Softwareverteilung vereinfachen. Plan ist es, via ...

Netzwerkprotokolle

Nachsehen ob Ports generell gesperrt sind

Frage von staybbNetzwerkprotokolle2 Kommentare

Hallo zusammen, Ich habe das Problem bei einem PC der in einem speziellen Netzwerk über LAN verbunden ist. Das ...

Neue Wissensbeiträge
Datenschutz

SiSyPHuS Win10: Analyse der Telemetriekomponenten in Windows 10

Tipp von freesolo vor 1 TagDatenschutz1 Kommentar

Alle die sich detailliert für die Datensammlung interessieren die unter Windows 10 stattfindet, sollten sich folgende Analyse des BSI ...

Sicherheit
Adminrechte dank Intel-Grafikkarte
Information von DerWoWusste vor 2 TagenSicherheit1 Kommentar

ist das Advisory, welches beschreibt, welche Intel HD Graphics Modelle Sicherheitslücken haben, mit denen sich schwache Nutzer zu Admins ...

Internet

EU Urheberrechtsreform: Eingriff in die Internetkultur

Information von Frank vor 2 TagenInternet1 Kommentar

Liebe Besucherin, lieber Besucher, warum erscheint das obere Banner in allen Beiträgen? Aus Protest gegen Teile der geplanten EU-Urheberrechtsreform ...

Windows Server
Windows Backup - FilterManager Event 3
Tipp von NixVerstehen vor 3 TagenWindows Server

Hallo zusammen, ich bin kein gelernter ITler und auch beruflich nicht in dem Feld tätig. Wir setzen in unserem ...

Heiß diskutierte Inhalte
Router & Routing
Lancom-VPN-Client
Frage von FM28880Router & Routing15 Kommentare

Hallo zusammen, ich habe heute zwei Rechner mit einem Lancom VPN-Client eingerichtet. Die VPN-Verbindung wird aufgebaut und steht. Jedoch ...

Microsoft Office
Sharepoint 2016 mag keine Umlaute in .docx-Titeln
gelöst Frage von DerWoWussteMicrosoft Office14 Kommentare

Moin Kollegen. Nutzt hier jemand Sharepoint? Könnt Ihr, unabhängig von der Sharepointversion, bitte einen Test machen? Ladet ein .docx ...

Hyper-V
Hyper-V Manager startet, jedoch keine VM
Frage von NaleorHyper-V12 Kommentare

Hallo zusammen, auf meinem Windows 10 (Build 1703) Notebook von der Arbeit scheint Hyper-V plötzliche nicht mehr zu funktionieren. ...

TK-Netze & Geräte
Telefonanlage Alcatel OXE R11.0.1, CPU c7s2, CPU 7 abgekündigt
Frage von magicteddyTK-Netze & Geräte10 Kommentare

Moin, letzten Monat rief mich ein Mitarbeiter unseres Service Partners an und erzählte mir das wir mit unserer Anlage ...