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

Printed on: April 16, 2024 at 10:04 o'clock

Member: Pjordorf
Pjordorf May 17, 2014 at 11:34:32 (UTC)
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
Member: rubberman
rubberman May 17, 2014 at 11:52:28 (UTC)
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
Member: Waldiman
Waldiman May 17, 2014 updated at 12:12:56 (UTC)
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??
Member: rubberman
rubberman May 17, 2014 at 12:26:13 (UTC)
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
Member: Pjordorf
Pjordorf May 17, 2014 updated at 12:49:59 (UTC)
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
Member: DerWoWusste
DerWoWusste May 17, 2014 at 14:26:49 (UTC)
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.
Member: Waldiman
Waldiman May 18, 2014 updated at 11:38:33 (UTC)
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
Member: DerWoWusste
DerWoWusste May 18, 2014 at 12:07:37 (UTC)
Goto Top
Unter XP geht es
Ja, wie beschrieben: als Hauptbenutzer. Schwache Nutzer können keine Dienste neu starten.
Member: rubberman
rubberman May 18, 2014 updated at 18:38:47 (UTC)
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
Member: SaschaRD
SaschaRD May 20, 2014 at 09:41:14 (UTC)
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