waldiman
Goto Top

Windows 7 Batch (CMD) für alle Benutzer

Hallo...

habe folgendes Problem.
Ich habe 2 CMD Scripte, die bei Bedarf den "MYSQL-Dienst" starten oder stoppen (script 1 Start MySQS, script 2 Stopp MySQL).
In Windows XP funktionierten beide einwandfrei, bei allen Anwendern.
Windows 7 Ultimate... laufen die aber nur, wenn ich sie als "Administrator" ausführe!
Habe nun schon versucht, die nach C:/Windows bzw. C/Windows/System zu Kopieren, und nur als Verknüpfung auf jeden Desktop. Geht aber auch nicht!

Wie mache ich es, dass auch PC-Benutzer ohne Administrative-Rechte die Verknüpfung nutzen können?

Content-Key: 238420

Url: https://administrator.de/contentid/238420

Ausgedruckt am: 28.03.2024 um 09:03 Uhr

Mitglied: Pjordorf
Pjordorf 17.05.2014 um 13:34:32 Uhr
Goto Top
Hallo,

Zitat von @Waldiman:
Ich habe 2 CMD Scripte, die bei Bedarf den "MYSQL-Dienst" starten oder stoppen (script 1 Start MySQS, script 2 Stopp MySQL).
Das nennst du ein Problem? face-smile

In Windows XP funktionierten beide einwandfrei, bei allen Anwendern.
Jaja, vor langer Zeit war alles anders und besser face-smile

Windows 7 Ultimate... laufen die aber nur, wenn ich sie als "Administrator" ausführe!
Si.

Habe nun schon versucht, die nach C:/Windows bzw. C/Windows/System zu Kopieren, und nur als Verknüpfung auf jeden Desktop.
Warum? Was soll der Blödsinn?

Geht aber auch nicht!
Si. face-smile

Wie mache ich es, dass auch PC-Benutzer ohne Administrative-Rechte die Verknüpfung nutzen können?
Da Windows 7 und das Sicheherheitskonzept seit Vista für dich Neuland zu sein scheint, lies dich mal in der Benutzerkontensteuerung (UAC) ein. Die sollte eingeschaltet sein und auf der Standardstufe stehen. Ein Administrator ist nicht mehr ein Vollwertiger Administrator, dazu bedarf es die Erhöhten Rechte (Elevated Rights). die sich anfordern lassen, sei es durch das Zauberwort "Setup.exe" oder Rechte Maustaste und "Als Administrator ausführen" um nur zwei zu nennen.

Und wenn du möchtest das ein "Normaler" eingeschränkter Benutzer auch Dienste Starten oder beenden sollen darf, dann musst du diesen Benutzern auch die Rechte dazu geben damit diese Dienste Starten / Beenden dürfen.

Gruß,
Peter
Mitglied: rubberman
rubberman 17.05.2014 um 13:52:28 Uhr
Goto Top
Hallo Waldiman,

über die Aufgabenplanung lässt sich das ggf. schon abwickeln. Sinnvollerweise sollte man den Inhalt deiner Batchdateien aber in die geplanten Tasks mit einarbeiten, damit niemand auf die Idee kommt den Code der Dateien zu ändern und die Sache zu missbrauchen. Wenn du also den (vemutlichen) Einzeiler in den Batchdateien hier mal posten würdest, würde ich dir auch fix ein Script schreiben, dass dir die entsprechenden Tasks anlegt.

Grüße
rubberman
Mitglied: Waldiman
Waldiman 17.05.2014 aktualisiert um 14:12:56 Uhr
Goto Top
Hallo

Ich will nicht das eingeschränkte Nutzer "allgemein" Dienste starten oder beenden dürfen!
Nur diesen einen Dienst - (script sollten sie dürfen)!

Oder bringt es mich weiter, wenn ich einfach die Benutzerwerwaltung (Benutzerkontensteuerung) lahm lege??
Mitglied: rubberman
rubberman 17.05.2014 um 14:26:13 Uhr
Goto Top
Oder bringt es mich weiter, wenn ich einfach die Benutzerwerwaltung (Benutzerkontensteuerung) lahm lege??
face-sad

Magst du meine Frage von oben beantworten, dann ist dir möglicherweise kurzfristig zu helfen.

Grüße
rubberman
Mitglied: Pjordorf
Pjordorf 17.05.2014 aktualisiert um 14:49:59 Uhr
Goto Top
Hallo,

Zitat von @Waldiman:
Ich will nicht das eingeschränkte Nutzer "allgemein" Dienste starten oder beenden dürfen!
OK

Nur diesen einen Dienst - (script sollten sie dürfen)!
Dann baue dir einen Task (geplante Aufgaben) der eben dein MySQL Startet (net start mysql) oder Stoppt (net stop mysql) mit allerhöchsten privilegien und lege einen Link dazu auf den Desktop bes benutzers mit eingeschränkten Rechten. Dies dann klicken lassen (notfalls erlauben das er diese Aufgaben ausführen darf) und gut ist.

Oder bringt es mich weiter, wenn ich einfach die Benutzerwerwaltung (Benutzerkontensteuerung) lahm lege??
Wie du deine benutzerkontensteuerung einstellst bleibt selbstverständlich dir überlassen. Es ist ja wohl dein Rechner, deine Software usw. Ob dir angeraten werden kann die UAC auszuschalten? NEIN.

Zum Anfangen sollte das erst mal reichen. Dein Internet ist voll davon. Frage deine Suchmaschine....
http://windows.microsoft.com/de-de/windows7/products/features/user-acco ...
http://windows.microsoft.com/de-de/windows/turn-user-account-control-on ...
http://de.wikipedia.org/wiki/Benutzerkontensteuerung
http://www.edbott.com/weblog/2007/02/what-triggers-user-account-control ...

Es ist ja nicht so das die UAC erst seit Gestern daherkommt. Wurde mit VISTA erstmals präsentiert und seit dem immer weiter ausgebaut / geändert / verschlimmbessert / verbessert....

Gruß,
Peter
Mitglied: DerWoWusste
DerWoWusste 17.05.2014 um 16:26:49 Uhr
Goto Top
Mal nebenher angemerkt: auch unter xp konnten normale Nutzer Dein Skript nicht nutzen - vermutlich hattest Du sie als Hauptbenutzer eingerichtet, die können unter xp Dienste starten, schwache Standardnutzer nicht.

Mittels der eingebauten sc.exe kannst Du die Rechte auf den Dienst setzen (sc sdset...), so das jeder ihn neu starten darf. Ebenfalls geht es über subinacl.exe (separater Download von Microsoft)
Beides vermittelt auf http://stackoverflow.com/questions/4436558/start-stop-a-windows-service ... - hier zitiert für subinacl und den Dienst bst:
1.Login as an administrator.
2.Download subinacl.exe from Microsoft: http://www.microsoft.com/en-us/download/details.aspx?id=23510
3.Grant permissions to the regular user account to manage the BST services. (subinacl.exe is in C:\Program Files (x86)\Windows Resource Kits\Tools\).
4.cd C:\Program Files (x86)\Windows Resource Kits\Tools\
subinacl /SERVICE \\MachineName\bst /GRANT=domainname.com\username=F or
subinacl /SERVICE \\MachineName\bst /GRANT=username=F
5.Logout and log back in as the user. They should now be able to launch the BST service.
Mitglied: Waldiman
Waldiman 18.05.2014 aktualisiert um 13:38:33 Uhr
Goto Top
Hallo rubberman...
hier die scripte!
@echo off
mode con cols=100 lines=25
color 3f
echo.
echo.
echo
echo
* Starte Dienst MySQL... *
echo

echo.
echo please wait.......
sc start "MySQL"
echo.
echo MySQL Server erfolgreich gestartet.
echo.
echo.
echo.
PAUSE
@echo off
mode con cols=100 lines=25
color 3f
echo.
echo.
echo
echo
* STOP Dienst MySQL... *
echo

echo.
echo please wait......
echo.
sc stop "MySQL"
echo.
echo MySQL Server erfolgreich beendet.
echo.
echo.
echo.
PAUSE

@mitglied: DerWoWusst
Unter XP geht es... nur müssen dort die Scripte im "Path" liegen... das heist C:/Windows oder C:/Windows/System
Mitglied: DerWoWusste
DerWoWusste 18.05.2014 um 14:07:37 Uhr
Goto Top
Unter XP geht es
Ja, wie beschrieben: als Hauptbenutzer. Schwache Nutzer können keine Dienste neu starten.
Mitglied: rubberman
rubberman 18.05.2014 aktualisiert um 20:38:47 Uhr
Goto Top
Ich denke, @DerWoWusste hat dir exakt beschrieben was du tun solltest. Falls dich der UAC Prompt stört (und damit meine ich keine anderen User) funktioniert das auch mit der Idee die ich im Hinterkopf hatte.

Führe folgenden Batchcode einmalig als Administrator aus:
@echo off &setlocal
cd /d "%~dp0"  
for /f "tokens=2 delims=:" %%i in ('chcp') do set /a oemcp=%%~ni  
>nul chcp 1252
set "xmlfile=%temp%\MYSQL.xml"  
set "cmmnd=%SystemRoot%\System32\cmd.exe"  

set "descr1=MYSQL Start"  
set "arg1=/c "%SystemRoot%\System32\sc.exe start MySQL""  
set "taskname1=MYSQL_Start"  

set "descr2=MYSQL Stop"  
set "arg2=/c "%SystemRoot%\System32\sc.exe stop MySQL""  
set "taskname2=MYSQL_Stop"  

set "line_01=<?xml version="1.0" encoding="UTF-16"?>"  
set "line_02=<Task version="1.3" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">"  
set "line_03=  <RegistrationInfo>"  
set "line_04=    <Author>rubberman @ administrator.de</Author>"  
set "line_05=    <Description>%descr1%</Description>"  
set "line_06=  </RegistrationInfo>"  
set "line_07=  <Triggers />"  
set "line_08=  <Principals>"  
set "line_09=    <Principal id="Author">"  
set "line_10=      <UserId>%userdomain%\%username%</UserId>"  
set "line_11=      <RunLevel>HighestAvailable</RunLevel>"  
set "line_12=    </Principal>"  
set "line_13=  </Principals>"  
set "line_14=  <Settings>"  
set "line_15=    <MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy>"  
set "line_16=    <DisallowStartIfOnBatteries>false</DisallowStartIfOnBatteries>"  
set "line_17=    <StopIfGoingOnBatteries>false</StopIfGoingOnBatteries>"  
set "line_18=    <AllowHardTerminate>true</AllowHardTerminate>"  
set "line_19=    <StartWhenAvailable>false</StartWhenAvailable>"  
set "line_20=    <RunOnlyIfNetworkAvailable>false</RunOnlyIfNetworkAvailable>"  
set "line_21=    <IdleSettings>"  
set "line_22=      <StopOnIdleEnd>false</StopOnIdleEnd>"  
set "line_23=      <RestartOnIdle>false</RestartOnIdle>"  
set "line_24=    </IdleSettings>"  
set "line_25=    <AllowStartOnDemand>true</AllowStartOnDemand>"  
set "line_26=    <Enabled>true</Enabled>"  
set "line_27=    <Hidden>true</Hidden>"  
set "line_28=    <RunOnlyIfIdle>false</RunOnlyIfIdle>"  
set "line_29=    <WakeToRun>false</WakeToRun>"  
set "line_30=    <ExecutionTimeLimit>P3D</ExecutionTimeLimit>"  
set "line_31=    <Priority>5</Priority>"  
set "line_32=  </Settings>"  
set "line_33=  <Actions Context="Author">"  
set "line_34=    <Exec>"  
set "line_35=      <Command>%cmmnd%</Command>"  
set "line_36=      <Arguments>%arg1%</Arguments>"  
set "line_37=      <WorkingDirectory>%SystemRoot%\System23</WorkingDirectory>"  
set "line_38=    </Exec>"  
set "line_39=  </Actions>"  
set "line_40=</Task>"  
<nul >"%xmlfile%" set /p "=ÿþ"  
>>"%xmlfile%" cmd /u /q /c "for /f "tokens=1* delims==" %%i in ('set line_') do echo %%j"  
>nul chcp %oemcp%
schtasks /create /xml "%xmlfile%" /tn "%taskname1%" /f  

>nul chcp 1252
set "line_05=    <Description>%descr2%</Description>"  
set "line_36=      <Arguments>%arg2%</Arguments>"  
<nul >"%xmlfile%" set /p "=ÿþ"  
>>"%xmlfile%" cmd /u /q /c "for /f "tokens=1* delims==" %%i in ('set line_') do echo %%j"  
>nul chcp %oemcp%
schtasks /create /xml "%xmlfile%" /tn "%taskname2%" /f  

del "%xmlfile%"  
pause

Nun kannst du mit den Kommandozeilen
schtasks /run /tn "MYSQL_Start" /i
bzw.
schtasks /run /tn "MYSQL_Stop" /i
den Dienst starten bzw. stoppen.

Aber, wie gesagt, sollte das so nur für deinen Account funktionieren. Sobald du den SYSTEM Account nutzen willst ...
set "line_10=      <UserId>S-1-5-18</UserId>"
... brauchst du schon wieder Adminrechte für das Starten per SCHTASKS.


Grüße
rubberman
Mitglied: SaschaRD
SaschaRD 20.05.2014 um 11:41:14 Uhr
Goto Top
Hallo,

wenn dich die UAC blockiert, kannst Du folgendes in die Batch einfügen:
set __compat_layer=runasinvoker
sc start "MySQL"  
set __compat_layer=
Gruß, Sascha