[GELÖST] NAS und SHELL

31. Mai 2016 14:47

Hallo Zusammen,

kann es sein, dass der NAS-Dienst nicht in der Lage ist einen SHELL-Befehl in Navision auszuführen?
Zuletzt geändert von MSNAVLerner am 1. Juni 2016 13:58, insgesamt 1-mal geändert.

Re: NAS und SHELL

31. Mai 2016 15:29

Es kann sein, dass der WindowsStyle eine Rolle spielt. Der NAS hat ja kein GUI Handling, also darf auch kein Fenster aufgehen.

Welche NAV Version betrifft das denn?

VG
Robert

Re: NAS und SHELL

31. Mai 2016 15:56

Hallo,

es kann auch sein, dass der Benutzer unter dem der NAS läuft keine Berechtigung oder Zugriff auf das Programm hat, auf das er zugreifen möchte.

Gruß Fiddi

Re: NAS und SHELL

31. Mai 2016 16:11

Version DE 4.00 SP2 (6.00.32519).

Der User hat SUPER-Rechte, sowohl in NAV als auch auf dem NAV-Server, auf dem der NAS-Dienst läuft.

Ich habe mich der Info aus der Hilfe bedient.

Code:
OnRun=BEGIN
            // The following is not trusted and will give a warning.
            ExecName := 'C:\windows\notepad.exe';
            param := 'C:\MyFile.txt';
            ret := SHELL(ExecName, param);
            // The following is trusted and will not give a warning.
            param := 'C:\MyFile.txt';
            ret := SHELL(TEXT000, param);
            // The following is not possible - will only give an error
            // message during runtime. This is also if its a TextConst:
            ExecName := 'C:\windows\notepad.exe C:\MyFile.txt';
            ret := SHELL(ExecName);
          END;


und dabei die "trusted"-Variante gewählt. Manuell ausgeführt funktioniert der Spaß.

Anbei mal mein Coding. Evtl. liegt es daran, dass ich nicht mit .exe arbeite?

Code:
        txtDateiName := 'C:\Batchverzeichnis\Fehler.txt';
        filDatei.TEXTMODE := TRUE;
        filDatei.WRITEMODE := TRUE;
        filDatei.QUERYREPLACE := FALSE;
        filDatei.CREATE(txtDateiName);
        filDatei.WRITE('Betreff: ' + ' blabla');
        filDatei.CLOSE;
        intret := SHELL(txtBatchbefehl, txtDateiName);


CODE
{
VAR
intret@1000 : Integer;
txtDateiName@1001 : Text[100];
txtBatchbefehl@1002 : TextConst 'ENU=c:\Batchverzeichnis\batch.bat';  // KONSTANTE    // mit .cmd habe ich es auch schon ausprobiert; im Einsatz ein Win2003 Server
}

Re: NAS und SHELL

31. Mai 2016 16:16

Der User hat SUPER-Rechte, sowohl in NAV als auch auf dem NAV-Server, auf dem der NAS-Dienst läuft.


Ich meinte den Windows- Benutzer unter dem der NAS- Dienst läuft. Hat der Zugriff auf die Daten bzw. Programme?

Wenn diese Programme mit ner GUI arbeiten, hast du eh ein Problem, wo soll der Notepad denn den Bildschirm anzeigen?

Gruß Fiddi

Re: NAS und SHELL

31. Mai 2016 16:20

Der Windows-Benutzer, unter dem der NAS läuft ist in meinem Fall zu Testzwecken der Server-Admin aus der Domäne.

Das Problem ist, dass er gar nicht soweit kommt, denn es wird nicht mal das "Fehler.txt"-File geschrieben.
Das Programm, welches dann auch ausgeführt werden soll, öffnet kurz das DOS-Fenster.

Re: NAS und SHELL

31. Mai 2016 16:29

Hast du es mal probiert mit einer Automation?

Name DataType Subtype Length
Shell_l Automation 'Windows Script Host Object Model'.WshShell

und dann entsprechend ohne DOS Fenster bzw. versteckten DOS Fenster? WindowsStyle -1 blendet das DOS Fenster aus!

CLEAR(Shell_l);
CREATE(Shell_l);
WindowsStyle_l := -1;
Shell_l.Run('Dein Befehl', WindowsStyle_l);

Re: NAS und SHELL

1. Juni 2016 13:58

Mit der Automation funktioniert es. Als WindowsStyle habe ich die 0 gewählt.
Werde mal bei nächster Gelegenheit nochmal mein altes Vorhaben ausprobieren, denn laut Hilfe muss es funktionieren. Die Frage ist nur wo der Haken ist.

Danke dir!