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

Frage Entwicklung Batch & Shell

GELÖST

Batch unter Windows 7 - generelles Problem

Mitglied: thecaptain

thecaptain (Level 1) - Jetzt verbinden

10.02.2010 um 15:39 Uhr, 16078 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% 
 
>xcopy d:\temp\Jibbet.Nich? e:\ 
Datei Jibbet.Nich? nicht gefunden. 
0 Datei(en) kopiert 
 
>echo %errorlevel% 
 
>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
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 ...

Windows 7
USB Problem Windows 7
Frage von bytetixWindows 76 Kommentare

Hi, wenn ich eine USB Platte oder Stick rein tue, wird dieser manchmal korrekt erkannt und alles funktioniert gut. ...

Verschlüsselung & Zertifikate
Problem mit dem Zertifikatsspeicher Windows 7
Frage von m.kerberVerschlüsselung & Zertifikate2 Kommentare

Moin moin, Wir haben einen Kunden, der bei seinem Nutzer-Zertifikat das Security Level auf Hoch eingestellt hat, damit er ...

Batch & Shell
Windows 7 Batch (CMD) für alle Benutzer
Frage von WaldimanBatch & Shell10 Kommentare

Hallo habe folgendes Problem. Ich habe 2 CMD Scripte, die bei Bedarf den "MYSQL-Dienst" starten oder stoppen (script 1 ...

Neue Wissensbeiträge
Linux

Meltdown und Spectre: Linux Update

Information von Frank vor 1 TagLinux

Meltdown (Variante 3 des Prozessorfehlers) Der Kernel 4.14.13 mit den Page-Table-Isolation-Code (PTI) ist nun für Fedora freigegeben worden. Er ...

Tipps & Tricks

Solutio Charly Updater Fehlermeldung: Das Abgleichen der Dateien in -Pfad- mit dem Datenobject ist fehlgeschlagen

Tipp von StefanKittel vor 2 TagenTipps & Tricks

Hallo, hier einmal als Tipp für alle unter Euch die mit der Zahnarztabrechnungssoftware Charly von Solutio zu tun haben. ...

Sicherheit

Meltdown und Spectre: Wir brauchen eine "Abwrackprämie", die die CPU-Hersteller bezahlen

Information von Frank vor 2 TagenSicherheit12 Kommentare

Zum aktuellen Thema Meltdown und Spectre: Ich wünsche mir von den CPU-Herstellern wie Intel, AMD oder ARM eine Art ...

Sicherheit

Meltdown und Spectre: Realitätscheck

Information von Frank vor 2 TagenSicherheit10 Kommentare

Die unangenehme Realität Der Prozessorfehler mit seinen Varianten Meltdown und Spectre ist seit Juni 2017 bekannt. Trotzdem sind immer ...

Heiß diskutierte Inhalte
Batch & Shell
Meltdown Microsoft Prüf Script - .zip Datei leider leer
gelöst Frage von MasterBlaster88Batch & Shell13 Kommentare

Hallo zusammen, ich patche gerade unsere Windows Server bzgl. der Meltdown Lücke. Patch vorhanden, Reg Keys gesetzt Um das ...

Batch & Shell
Shell-Skript - Syntax error: Unterminated quoted string
Frage von newit1Batch & Shell13 Kommentare

Hallo Ich schreibe ein Skript das eine CSV-Datei in eine mySQL Datenbank schieben soll. Bekomme nach start des Skrips ...

E-Mail
Erfahrungen mit hMailServer gesucht
Frage von it-fraggleE-Mail10 Kommentare

Hallo, meine neue Stelle möchte einen eigenen Mailserver. Ich als Linuxkind war direkt geistig mit Postfix dabei. Leider wollen ...

Windows Server
DNS Forwarding an andere Domäne
Frage von detox91Windows Server9 Kommentare

Hallo, für Testzwecke haben wir bei uns eine zweite Windows Domäne (B.local) aufgebaut, welche komplett unabhängig und isoliert der ...