infowars
Goto Top

.bat mit runas als SYSTEM starten

Hi,
ich möchte eine .bat unter Win7 als SYSTEM starten, in der eine Anwendung mit runas /user:user aufgerufen wird, bekomme jedoch nach Eingabe des Passworts immer die Fehlermeldung :

-2147647259 unbekannter Fehler

Inhalt der .bat
runas /user:user /savecred "'U:\Program Files (x86)\Pfad\anwendung.exe' -parameter parameter.file"  
pause

System hat Berechtigung die .bat auszuführen, die erkennung interaktiver Dienste startet.
Weiss einer von euch Rat ?

Content-ID: 192215

Url: https://administrator.de/forum/bat-mit-runas-als-system-starten-192215.html

Ausgedruckt am: 22.12.2024 um 11:12 Uhr

DerWoWusste
DerWoWusste 04.10.2012 um 12:33:18 Uhr
Goto Top
Moin.

Hat System denn ein Laufwerk u?
infowars
infowars 04.10.2012 aktualisiert um 12:41:25 Uhr
Goto Top
Ja, die .bat ist in U:\Program Files (x86)\Pfad
Das Problem liegt glaube ich an der Übergabe des Parameters, bzw. an den Anführungsstrichen.
Denn ohne parameter funktioniert es:
runas /user:user /savecred "'U:\Program Files (x86)\Pfad\anwendung.exe' -parameter parameter.file"  
pause
DerWoWusste
DerWoWusste 04.10.2012 um 12:41:19 Uhr
Goto Top
Dass die .bat in Deinem u: liegt, glaub ich ja gern. Die Frage ist aber, ob Du dem Systemaccount u: zuvor gemappt hast. Netzlaufwerke sind nämlich nicht systemweit verfügbar.
infowars
infowars 04.10.2012 um 12:42:05 Uhr
Goto Top
Ist eine lokale Festplatte, kein Netzlaufwerk.
infowars
infowars 04.10.2012 um 12:45:00 Uhr
Goto Top
Die einfachen Anführungsstriche machen Probleme, hab ich gerade rausgefunden.
Wie kann ich den parameter mit übergeben, ohne einfache Anführungsstriche zu benutzen ?
DerWoWusste
DerWoWusste 04.10.2012 um 12:46:38 Uhr
Goto Top
Kannst Du die einfachen nicht weglassen?
infowars
infowars 04.10.2012 aktualisiert um 13:02:30 Uhr
Goto Top
Wenn ich die .bat manuell so starte, dann funktionierts, aber mit runas nicht.
Erst mal manuell testen, dann sehen wir weiter.
So funktionierts:
"U:\Program Files (x86)\Pfad\anwendung.exe" -parameter parameter.file  
pause
So funktionierts nicht, bekomme dann Syntax von runas, ohne Anführungsstriche ebenso....:
runas /user:user "U:\Program Files (x86)\Pfad\anwendung.exe" -parameter parameter.file  
pause

P.S. So bekomme ich wenigstens keine Fehlermeldung:
runas /user:user /savecred "U:\Program Files (x86)\Pfad\anwendung.exe -parameter parameter.file"  
pause

Ah, hat sich überschnitten...
DerWoWusste
DerWoWusste 04.10.2012 um 13:01:16 Uhr
Goto Top
Ich meinte so:
runas /user:user "U:\Program Files (x86)\Pfad\anwendung.exe -parameter parameter.file"  
infowars
infowars 04.10.2012 um 13:08:02 Uhr
Goto Top
So bekomme ich keine Fehlermeldung:
runas /user:user /savecred "U:\Program Files (x86)\Pfad\anwendung.exe -parameter parameter.file"  
pause

So bekomme ich einmal eine Fehlermeldung -2147647259 unbekannter Fehler und dann nicht mehr, seltsam. Die Anwendung startet trotzdem nicht :
runas /user:aktuellangemeldeteradmin /savecred "U:\Program Files (x86)\Pfad\anwendung.exe -parameter parameter.file"  
pause
andimue
andimue 04.10.2012 um 13:30:16 Uhr
Goto Top
... mal ne dumme Frage: braucht dein parameter.file eigentlich keinen Pfad ?
infowars
infowars 04.10.2012 aktualisiert um 13:39:49 Uhr
Goto Top
Normalerweise sollte der Pfad davor genügen, lasse mich aber gern eines besseren belehren.
Hab mal die Windows-Ereignisse angeguckt, vielleicht sagt euch das mehr:

Protokollname: Security
Quelle: Microsoft-Windows-Security-Auditing
Datum: 04.10.2012 13:31:33
Ereignis-ID: 4634
Aufgabenkategorie:Abmelden
Ebene: Informationen
Schlüsselwörter:Überwachung erfolgreich
Benutzer: Nicht zutreffend
Computer: xxx
Beschreibung:
Ein Konto wurde abgemeldet.

Antragsteller:
Sicherheits-ID: xxx\lokaladmin
Kontoname: lokaladmin
Kontodomäne: xxx
Anmelde-ID: 0x256bb4

Anmeldetyp: 2

Dieses Ereignis wird generiert, wenn eine Anmeldesitzung zerstört wird. Es kann anhand des Wertes der Anmelde-ID positiv mit einem Anmeldeereignis korreliert werden. Anmelde-IDs sind nur zwischen Neustarts auf demselben Computer eindeutig.
Ereignis-XML:
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
<System>
<Provider Name="Microsoft-Windows-Security-Auditing" Guid="{54849625-5478-4994-A5BA-3E3B0328C30D}" />
<EventID>4634</EventID>
<Version>0</Version>
<Level>0</Level>
<Task>12545</Task>
<Opcode>0</Opcode>
<Keywords>0x8020000000000000</Keywords>
<TimeCreated SystemTime="2012-10-04T11:31:33.871051500Z" />
<EventRecordID>64455</EventRecordID>
<Correlation />
<Execution ProcessID="900" ThreadID="960" />
<Channel>Security</Channel>
<Computer>xxx</Computer>
<Security />
</System>
<EventData>
<Data Name="TargetUserSid">S-1-5-21-487265471-2021113798-1119111891-1002</Data>
<Data Name="TargetUserName">lokaladmin</Data>
<Data Name="TargetDomainName">xxx</Data>
<Data Name="TargetLogonId">0x256bb4</Data>
<Data Name="LogonType">2</Data>
</EventData>
</Event>


Protokollname: Security
Quelle: Microsoft-Windows-Security-Auditing
Datum: 04.10.2012 13:31:34
Ereignis-ID: 4624
Aufgabenkategorie:Anmelden
Ebene: Informationen
Schlüsselwörter:Überwachung erfolgreich
Benutzer: Nicht zutreffend
Computer: xxx
Beschreibung:
Ein Konto wurde erfolgreich angemeldet.

Antragsteller:
Sicherheits-ID: xxx\lokaladmin
Kontoname: lokaladmin
Kontodomäne: xxx
Anmelde-ID: 0x4335b

Anmeldetyp: 2

Neue Anmeldung:
Sicherheits-ID: xxx\lokaladmin
Kontoname: lokaladmin
Kontodomäne: xxx
Anmelde-ID: 0x259b76
Anmelde-GUID: {00000000-0000-0000-0000-000000000000}

Prozessinformationen:
Prozess-ID: 0x45c
Prozessname: C:\Windows\System32\svchost.exe

Netzwerkinformationen:
Arbeitsstationsname: xxx
Quellnetzwerkadresse: ::1
Quellport: 0

Detaillierte Authentifizierungsinformationen:
Anmeldeprozess: seclogo
Authentifizierungspaket: Negotiate
Übertragene Dienste: -
Paketname (nur NTLM): -
Schlüssellänge: 0

Dieses Ereignis wird beim Erstellen einer Anmeldesitzung generiert. Es wird auf dem Computer generiert, auf den zugegriffen wurde.

Die Antragstellerfelder geben das Konto auf dem lokalen System an, von dem die Anmeldung angefordert wurde. Dies ist meistens ein Dienst wie der Serverdienst oder ein lokaler Prozess wie "Winlogon.exe" oder "Services.exe".

Das Anmeldetypfeld gibt den jeweiligen Anmeldetyp an. Die häufigsten Typen sind 2 (interaktiv) und 3 (Netzwerk).

Die Felder für die neue Anmeldung geben das Konto an, für das die Anmeldung erstellt wurde, d. h. das angemeldete Konto.

Die Netzwerkfelder geben die Quelle einer Remoteanmeldeanforderung an. der Arbeitsstationsname ist nicht immer verfügbar und kann in manchen Fällen leer bleiben.

Die Felder für die Authentifizierungsinformationen enthalten detaillierte Informationen zu dieser speziellen Anmeldeanforderung.
- Die Anmelde-GUID ist ein eindeutiger Bezeichner, der verwendet werden kann, um dieses Ereignis mit einem KDC-Ereignis zu korrelieren.
- Die übertragenen Dienste geben an, welche Zwischendienste an der Anmeldeanforderung beteiligt waren.
- Der Paketname gibt das in den NTLM-Protokollen verwendete Unterprotokoll an.
- Die Schlüssellänge gibt die Länge des generierten Sitzungsschlüssels an. Wenn kein Sitzungsschlüssel angefordert wurde, ist dieser Wert 0.
Ereignis-XML:
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
<System>
<Provider Name="Microsoft-Windows-Security-Auditing" Guid="{54849625-5478-4994-A5BA-3E3B0328C30D}" />
<EventID>4624</EventID>
<Version>0</Version>
<Level>0</Level>
<Task>12544</Task>
<Opcode>0</Opcode>
<Keywords>0x8020000000000000</Keywords>
<TimeCreated SystemTime="2012-10-04T11:31:34.593092800Z" />
<EventRecordID>64456</EventRecordID>
<Correlation />
<Execution ProcessID="900" ThreadID="960" />
<Channel>Security</Channel>
<Computer>xxx</Computer>
<Security />
</System>
<EventData>
<Data Name="SubjectUserSid">S-1-5-21-487265471-2023623798-3869298891-1002</Data>
<Data Name="SubjectUserName">lokaladmin</Data>
<Data Name="SubjectDomainName">xxx</Data>
<Data Name="SubjectLogonId">0x4335b</Data>
<Data Name="TargetUserSid">S-1-5-21-487265471-2023623798-3869298891-1002</Data>
<Data Name="TargetUserName">lokaladmin</Data>
<Data Name="TargetDomainName">xxx</Data>
<Data Name="TargetLogonId">0x259b76</Data>
<Data Name="LogonType">2</Data>
<Data Name="LogonProcessName">seclogo</Data>
<Data Name="AuthenticationPackageName">Negotiate</Data>
<Data Name="WorkstationName">xxx</Data>
<Data Name="LogonGuid">{00000000-0000-0000-0000-000000000000}</Data>
<Data Name="TransmittedServices">-</Data>
<Data Name="LmPackageName">-</Data>
<Data Name="KeyLength">0</Data>
<Data Name="ProcessId">0x45c</Data>
<Data Name="ProcessName">C:\Windows\System32\svchost.exe</Data>
<Data Name="IpAddress">::1</Data>
<Data Name="IpPort">0</Data>
</EventData>
</Event>


Protokollname: Security
Quelle: Microsoft-Windows-Security-Auditing
Datum: 04.10.2012 13:31:34
Ereignis-ID: 4672
Aufgabenkategorie:Spezielle Anmeldung
Ebene: Informationen
Schlüsselwörter:Überwachung erfolgreich
Benutzer: Nicht zutreffend
Computer: xxx
Beschreibung:
Einer neuen Anmeldung wurden besondere Rechte zugewiesen.

Antragsteller:
Sicherheits-ID: xxx\lokaladmin
Kontoname: lokaladmin
Kontodomäne: xxx
Anmelde-ID: 0x259b76

Berechtigungen: SeSecurityPrivilege
SeTakeOwnershipPrivilege
SeLoadDriverPrivilege
SeBackupPrivilege
SeRestorePrivilege
SeDebugPrivilege
SeSystemEnvironmentPrivilege
SeImpersonatePrivilege
Ereignis-XML:
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
<System>
<Provider Name="Microsoft-Windows-Security-Auditing" Guid="{54849625-5478-4994-A5BA-3E3B0328C30D}" />
<EventID>4672</EventID>
<Version>0</Version>
<Level>0</Level>
<Task>12548</Task>
<Opcode>0</Opcode>
<Keywords>0x8020000000000000</Keywords>
<TimeCreated SystemTime="2012-10-04T11:31:34.593092800Z" />
<EventRecordID>64457</EventRecordID>
<Correlation />
<Execution ProcessID="900" ThreadID="960" />
<Channel>Security</Channel>
<Computer>xxx</Computer>
<Security />
</System>
<EventData>
<Data Name="SubjectUserSid">S-1-5-21-487265471-2023623798-1119211191-1002</Data>
<Data Name="SubjectUserName">lokaladmin</Data>
<Data Name="SubjectDomainName">xxx</Data>
<Data Name="SubjectLogonId">0x259b76</Data>
<Data Name="PrivilegeList">SeSecurityPrivilege
SeTakeOwnershipPrivilege
SeLoadDriverPrivilege
SeBackupPrivilege
SeRestorePrivilege
SeDebugPrivilege
SeSystemEnvironmentPrivilege
SeImpersonatePrivilege</Data>
</EventData>
</Event>
infowars
infowars 04.10.2012 um 13:49:51 Uhr
Goto Top
Es muss mit der Anwendung bzw. dem Parameter zu tun haben, denn andere Anwendungen lassen sich so problemlos starten.
runas /user:user /savecred "U:\Program Files (x86)\andererPfad\andereAnwendung.exe"  
pause
andimue
andimue 04.10.2012 um 13:53:25 Uhr
Goto Top
Zitat von @infowars:
Normalerweise sollte der Pfad davor genügen, lasse mich aber gern eines besseren belehren.


Hast du denn mal probiert, die Parameterdatei vollqualifiziert anzugeben und dann zu schauen, was passiert?
Weil ausprobieren kannst das Verhalten meiner Meinung nach nur du, denn nur du kennst das Programm, das sich hinter anwendung.exe verbirgt face-smile
infowars
infowars 04.10.2012 aktualisiert um 14:56:25 Uhr
Goto Top
Probiert hab ich es, aber keine Änderung.

Aber nochmal:

So funktionierts: Ich führe die .bat als lokaladmin aus:
"U:\Program Files (x86)\Pfad\Anwendung.exe"  -parameter parameter.file  
pause
So funktionierts auch: Ich führe die .bat ohne Parameter als lokaladmin aus:
"U:\Program Files (x86)\Pfad\Anwendung.exe"  
pause
So funktionierts ein Teil, die Anwendung startet, aber verbuggt, ich sehe z.B. keine Schrift im Menu, ich drücke Enter für O.K. und Anwendung stürzt ab:
runas /user:lokaladmin /savecred "U:\Program Files (x86)\Pfad\Anwendung.exe"   
pause
So funktioniert nichts dergleichen:
runas /user:lokaladmin /savecred "U:\Program Files (x86)\Pfad\Anwendung.exe -parameter parameter.file"  
pause

Das bedeutet doch, das es einen Unterschied gibt, ob runas angegeben wird oder die .bat direkt ausgeführt wird.
Aber warum bzw. wo liegt hier der Unterschied ?
andimue
andimue 05.10.2012 um 08:45:19 Uhr
Goto Top
Servus,

hier hab ich noch eine andere Variante gefunden ( http://www.wintotal.de/tipparchiv/?id=523 )

runas /env /user:Benutzer@Domäne.Microsoft.com "notepad \"Meine Datei.txt\""

Vielleicht klappt das ja
infowars
infowars 05.10.2012 aktualisiert um 10:03:14 Uhr
Goto Top
Danke für den Tipp, hatte ich aber auch schon durchgelesen.
Resultat:
-2147647259 unbekannter Fehler
andimue
andimue 05.10.2012 um 10:14:05 Uhr
Goto Top
Schade

Hast du mal den Aufruf der exe mit ihrem Parameterfile in eine .bat bzw. .cmd gepackt und versucht, das mit runas auszuführen ?
infowars
infowars 05.10.2012 aktualisiert um 13:40:30 Uhr
Goto Top
Erste .bat Inhalt so:
runas /user:lokaladmin /savecred /env "U:\Program Files (x86)\Pfad\runasAnwendung.bat"   
pause
ruft diese auf:
"U:\Program Files (x86)\Pfad\runasAnwendung.bat -parameter parameter.file"  
Resultat:
-2147647259 unbekannter Fehler nach Eingabe des Passworts beim Aufruf der zweiten .bat
andimue
andimue 05.10.2012 um 13:37:00 Uhr
Goto Top
das hab ich schon verstanden, du hast es nun ja oft genug geschrieben (wobei du einmal von AndereAnwendung.exe und beim 2.Mal von SpezielleAnwendung.exe sprichst).
Meine Frage war, wenn du eine batch mit folgendem Inhalt erstellst:

::  MeineBat.bat
"U:\Program Files (x86)\Pfad\SpezielleAnwendung.exe" -parameter parameter.file  

und sie in etwa so aufrufst:

runas /env /user:lokaladmin /savecred  U:\Meinebat.bat

Geht das denn ?
infowars
infowars 05.10.2012 aktualisiert um 14:01:26 Uhr
Goto Top
Oh ,jetzt gehts !
Hatte jetzt einen Schreibfehler reingebracht beim Benutzernamen lokalAdmin.
Sorry, wollte dich jetzt nicht durcheinander bringen.face-smile
Das ist doch dann kein unbekannter Fehler, hm.
Egal, so rum funktionierts, anders rum nicht.
Danke !
infowars
infowars 05.10.2012 aktualisiert um 14:07:25 Uhr
Goto Top
Jetzt muss ich nur noch den Aufruf über PHP hinbringen, der funktioniert nämlich auch nicht:
<?php
exec('start "U:\\Program Files (x86)\\Pfad\\StarteZweiteBat.bat"');  
?>
Aber da mach nochmal einen anderen Thread auf.
Thx
MfG