Deutsch
Forum

Winexec /CMD Problem

 

maroro
Hallo,

es hat mal funktioniert. Vermutlich seit einem Microsoftupdate nicht mehr.
Ich schreibe Xprofan Programme die auf eine Active Directory zugreifen. Da ich das nicht selbst ansprechen kann gehe ich den Umweg über Dsquery.exe und Dsget.exe deren Ausgaben ich über
die Zwischenablage in das Programm hole. Wenn ich eine CMD öffne und die die beiden Programme benutze geht das nach wie vor problemlos. Wenn ich mit XProfan eine CMD öffen werden die beiden Dateien nicht gefunden und mit dir auch nicht aufgelistet. Auf dem Rechner vom Kollegen das gleiche. Beide Win8.1 ...auf Windows 7 ohne Updates geht es.
Was ist an der CMD die XProfan öffnet anders? Wie bekomme ich das wieder zum laufen?
 
17.10.2017  
 




ByteAttack
Also unter Server 2016 funktioniert das?

Hier mal ein Beispiel mit dsquery server ohne Zwischenablage
 $H Windows.ph
 $H Structs.ph
Struct PROCESS_INFORMATION = ~PROCESS_INFORMATION
Struct SECURITY_ATTRIBUTES = ~SECURITY_ATTRIBUTES
Struct STARTUPINFO = ~STARTUPINFO
DEF &NORMAL_PRIORITY_CLASS  $20
DEF &STARTF_USESTDHANDLES  $100
DEF &STARTF_USESHOWWINDOW  $1
CLS ~GetSysColor(~COLOR_BTNFACE)
SetDialogFont ~GetStockObject(~ANSI_VAR_FONT)
Var Ende& = 0
Var Multi& = Create("MultiEdit",%hwnd,"",1,10,500,400)
Var Button& = Create("Button",%hwnd,"Start",540,10,80,24)
Var Button1& = Create("Button",%hwnd,"Ende",540,40,80,24)

Whilenot Ende&

    Waitinput

    If Clicked(Button1&)

        Ende& = 1

    ElseIf Clicked(Button&)

        ' DSQUERY
        DirektDosOutputToMultiedit("", "dsquery server",255,Multi&)

    Endif

EndWhile

End

Proc DirektDosOutputToMultiedit

    Parameters Progname$,Command$,MemBuffer&,Multiedit&
    Declare hRPipe&,hWPipe&,pRBytes&,Result&
    Declare PI#,SI#,SA#
    Dim PI#,PROCESS_INFORMATION
    Dim SI#,STARTUPINFO
    Dim SA#,SECURITY_ATTRIBUTES
    Declare StringBuffer$
    StringBuffer$ = Space$(MemBuffer&)
    SA#.nLength& =SizeOf(SA#)
    SA#.bInheritHandle& = 1
    SA#.lpSecurityDescriptor& = 0
    Result& = ~CreatePipe(Addr(hRPipe&), Addr(hWPipe&), SA#, 0)

    If Result& = 0

        MessageBox("Pipe konnte nicht gestartet werden","",0)
        End

    Endif

    If Progname$ <> ""

        Command$ = " " + Command$

    Endif

    SI#.cb& = SizeOf(SI#)
    SI#.dwFlags& = &STARTF_USESHOWWINDOW | &STARTF_USESTDHANDLES
    SI#.hStdOutput& = hWPipe&
    SI#.hStdError& = hWPipe&

    If Progname$ = ""

        Result& = ~CreateProcess(0, Addr(Command$), SA#, SA#, 1, &NORMAL_PRIORITY_CLASS, 0, 0, SI#,PI#)

    Else

        Result& = ~CreateProcess(Addr(Progname$), Addr(Command$),SA#,SA#,1,&NORMAL_PRIORITY_CLASS, 0, 0,SI#,PI#)

    Endif

    If Result& <> 1

        MessageBox("Datei nicht gefunden","",0)
        End

    Else

    Endif

    Result& = ~CloseHandle(hWPipe&)
    Var out$ = ""

    While Result& <> 0

        Result& = ~ReadFile(hRPipe&,Addr(StringBuffer$),MemBuffer&,Addr(pRBytes&), 0)

        If pRBytes& > 0

            Out$ = Left$(StringBuffer$,pRBytes&)
            ~OemToChar(Addr(Out$),Addr(Out$))
            Settext Multiedit&,GetText$(Multiedit&)+Out$

        Endif

    Endwhile

    ~CloseHandle(PI#.hProcess&)
    ~CloseHandle(PI#.hThread&)
    ~CloseHandle(hRPipe&)
    Dispose PI#,SI#,SA#

EndProc


 
Website:  [...] 
Facebook:  [...] 
17.10.2017  
 




ByteAttack
Sollte das auch nicht funktionieren, probiere doch einfach mal über eine Batch Datei:

Beispiel: dsquery.cmd

Beispiel XProfan-Source
Declare Zeile$
Window 100,100-640,480
ShellExec("C:\dsquery.cmd","open",0)
Print "Warten..."
Sleep 10000
Print "Weiter...."
Assign #1,"C:\RESULT.TXT"
Reset #1

WhileNot Eof(#1)

    Input #1,Zeile$
    Print Zeile$

EndWhile

Close #1
WaitInput

 
Website:  [...] 
Facebook:  [...] 
17.10.2017  
 




maroro
Vielen dank für den Input. Ich brauche auch noch dsget ...will nur lesen nichts ändern. auf Server 2012 funktioniert es mit aktuellsten Updatestand. Win7 aktuell habe ich nicht getestet. Win 8.1 bis ca. vor einem halben Jahr. Win10 will ich morgen testen. Server 2016 steht mir nicht zur Verfügung.
Batchdateien an sich funktionieren...aber nicht wenn ich sie von X Profan aus aufrufe.Das heißt die beiden Befehle funktionieren nicht der Rest schon.

XProfan ist die Version 13

Die Umgehung der Zwischenablage löst das Problem leider nicht.
die dsquery.cmd funktioniert auch vom Hand gestartet über shellexec geht es nicht.
 
17.10.2017  
 




Michael
W.
Die schönsten Rätsel sind immer die ohne einen Beispielcode.

Ist da evtl. nur das falsche Verzeichnis angesprochen worden?

Ich habe leider keinen Server zur Hand. Und ohne ein Quellcode-Schnippselchen ist da nichts zu machen.

Wenn die beiden Dateien nicht im Pfad stehen, dann hilft eine direkte Pfadangabe.

Und Zwischendateien schreibt man auch möglichst nicht ins Hauptverzeichnis.
 
Alle Sprachen
System: Windows 8/10, XProfan X4
Programmieren, das spannendste Detektivspiel der Welt.
18.10.2017  
 




ByteAttack
Michael W. (18.10.2017)
Und Zwischendateien schreibt man auch möglichst nicht ins Hauptverzeichnis.


War ja auch nur als Beispiel

Also die beiden Dateien liegen beim Server Standardgemäß in C:\Windows\SysWOW64
 
Website:  [...] 
Facebook:  [...] 
18.10.2017  
 




maroro
also unter Win10 funktioniert es auch nicht.
es geht nicht um Fehler im Code es geht um die CMD.EXE
wenn ich sie per "Hand" aufrufe funktioniert alles
wenn ich sie aus XProfan aufrufe funktioniert DSQUERY und DSGET nicht, alles andere wie DIR zb. funktioniert.
Ich bin also nicht zu blöd eine CMD von XProfan aus aufzurufen
sie verhält sich danach nur anders. Dir zeigt die DSQUERY.EXE nicht an die DSQUERY.DLL schon. wenn ich CMD von "Hand" aufrufe zeigt DIR beide Dateien an. In beiden Fällen wird die CMD im Context meines Benutzers ausgeführt(zumindest wird mir das so angezeigt). auch ein ausführen als Administrator ändert nichts.

DSQUERY und DSGET sind Bestandteile von Remote Server Administrations Tool (RSAT) ...das muss installiert sein.

Quellcode:
winExec(getEnv$("COMSPEC")+" /k chcp 850 && dsget.....
oder ShellExec("dsquery.exe","open",0)

bei mir liegen die Dateien im C:Windows\system32 und das liegt
im Path. Auch direktes Ansprechen via C:\windows\system32\dsquery.exe funktioniert nicht aus Xprofan.
 
19.10.2017  
 




ByteAttack
So! Auch mal geprüft! Mit WinExec läßt sich die Datei nicht direkt aufrufen obwohl die eigentlich da ist (getestet mit Win10)

Habe Testweise eine cmd-Datei gemacht, und da funktioniert es mit ShellExec....
Also leider wohl über den Umweg mit einer CMD machen... Liegt evtl an den Benutzer/Computerrichtlinien...
 
Website:  [...] 
Facebook:  [...] 
19.10.2017  
 




Michael
W.
Da hat ByteAttack mal wieder recht.
aus TechNet

Dsquery

Letzte Aktualisierung: Dezember 2007

Betrifft: Windows Server 2003, Windows Server 2003 R2, Windows Server 2003 with SP1, Windows Server 2008, Windows Server 2008 R2

Queries the directory by using search criteria that you specify. Each of the dsquery commands finds objects of a specific object type, with the exception of dsquery *, which can query for any type of object

Dsquery is a command-line tool that is built into Windows Server 2008. It is available if you have the Active Directory Domain Services (AD DS) server role installed. To use dsquery, you must run the dsquery command from an elevated command prompt. To open an elevated command prompt, click Start, right-click Command Prompt, and then click Run as administrator.
 
Alle Sprachen
System: Windows 8/10, XProfan X4
Programmieren, das spannendste Detektivspiel der Welt.
19.10.2017  
 



Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

8.123 Betrachtungen

Unbenanntvor 0 min.
Uwe Lang29.05.2024
Frank Reibold25.11.2022
Thomas Freier06.10.2022
Stringray05.01.2022
Mehr...

Themeninformationen

Dieses Thema hat 3 Teilnehmer:

ByteAttack (4x)
maroro (3x)
Michael W. (2x)


Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie