WinFuture-Forum.de: Aufgabenplanung soll Access starten als SYSTEM - WinFuture-Forum.de

Zum Inhalt wechseln

Alle Informationen zum Thema Windows 7 in unserem Special. Windows 7 Download, FAQ und neue Funktionen im Überblick.
Seite 1 von 1

Aufgabenplanung soll Access starten als SYSTEM


#1 Mitglied ist offline   SabineNep 

geschrieben 12. September 2011 - 18:53

Hallo Ihr !

Win7 Pro 64bit
Office 2010 32bit

Ich erstelle im Aufgabenplaner eine Auktion die Access startet. Access arbeitet ein Macro ab (erstellt einen Tabellen Dump als txt Datei). Per Batch oder PowerShell oder sogar als einzelne EXE läuft das alles richtig. Aber nur solange ich im Aufgabenplaner den angemeldeten Benutzer nehme. Wenn ich das ganze starte unabhängig vom angemeldeten Benutzer und statt dessen SYSTEM eintrage, wird Access zwar gestartet aber es bleibt hängen. Es generiert keine txt Datei und wird auch nicht beendet.

Ich könnte mir vorstellen daß das Problem was mit Rechten oder Pfaden zu tun hat. Kann mir jemand helfen ?

Vielen Dank im vorraus !



PS: Bekomme folgende Fehlermeldung : Ausnahme von HRESULT: 0x800A9D9F

Dieser Beitrag wurde von SabineNep bearbeitet: 12. September 2011 - 19:55

0

Anzeige



#2 Mitglied ist offline   Superpeppi 

  • Gruppe: aktive Mitglieder
  • Beiträge: 819
  • Beigetreten: 11. Mai 07
  • Reputation: 15

geschrieben 13. September 2011 - 09:56

Access benutzt ja eine Fenster um normalerweise mit dem Benutzer zu interagieren.
Dazu verwendet es den Desktop den der "normale" Benutzer ja hat.
Der "Benutzer" System hat aber keinen Desktop (wo sollte der auch sein?) und Access hängt sich daran auf.

Programme die unter System laufen benötigen auch immer ein zusätzliches Programm was unter dem aktuelle Benutzer läuft um mit ihm über seinen Desktop zu komunizieren.
Es dient dann als Schnittstelle zwischen User und dem Programm was unter System läuft.

Dieser Beitrag wurde von Superpeppi bearbeitet: 13. September 2011 - 09:58

0

#3 Mitglied ist offline   egal8888 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.019
  • Beigetreten: 23. September 10
  • Reputation: 25
  • Geschlecht:Männlich

geschrieben 13. September 2011 - 10:09

Geh mal testhalber in die Access-Optionen und dann in die Einstellungen des Vertrauenstellungscenters.
Bei "Einstellungen für Makros" aktivierst Du mal die Option "alle Makros aktivieren".
0

#4 Mitglied ist offline   SabineNep 

geschrieben 13. September 2011 - 13:49

Hallo !
Schon mal Danke für eure Hilfe ihr beiden ! Aber leider bin ich nicht weitergekommen.

Habe in der Datenbank die Sicherheit überprüft :
Alle Makros aktivieren und Vertrauenswürdige Speicherorte sind ok.

Habe mir einen neuen User angelegt mit Admin rechten und diesen im Aufgabenplaner angegeben. Das mit System und den fehlenden Desktop ist eine super Info. Jetzt weiss ich warum die Access Visiable Eingenschaft einen fehler ausgelöst hat.

Leider geht es aber immmer noch nicht.

Ausnahme von HRESULT: 0x800A9D9F
Microsoft.Office.Interop.Access

Ich muss den Aufgabenplaner von Hand anhalten und im Taskmanager die msaccess.exe löschen.

Hier mal der VB2010 Code:
Imports Access = Microsoft.Office.Interop.Access


Public Class Form1

    Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim db As Access.ApplicationClass
        db = CreateObject("Access.Application")
        Try
            db.OpenCurrentDatabase("d:\datenbank.accdb", False)
            db.Run("machwas")
        Catch ex As Exception
            My.Computer.FileSystem.WriteAllText("d:\logtfile.txt", ex.Message + vbCrLf, True)
            My.Computer.FileSystem.WriteAllText("d:\logtfile.txt", ex.Source + vbCrLf, True)
        Finally
            db.DoCmd().Quit(Access.AcQuitOption.acQuitSaveNone)
            System.Runtime.InteropServices.Marshal.ReleaseComObject(db)
            db = Nothing
        End Try
        Me.Close()
    End Sub

End Class



Das ganze habe ich auch unter PowerShell mal getestet. Ganz genau das selbe:

    $accessApp = new-object -ComObject access.application
    $accessApp.Application.OpenCurrentDatabase("d:\datenbank.accdb")
    $accessApp.Application.Run("machwas") 
    $accessApp.Application.CloseCurrentDatabase()
    $accessApp.Application.Quit()
    $accessApp=$null



Selbst mit normalen Batch ist es genau der selbe Fehler:

start "TEST" /WAIT "C:\Program Files\Microsoft Office\Office14\MSACCESS.EXE" /EMBEDDING "d:\datenbank.accdb" /x mache_was_als_macro


0

#5 Mitglied ist offline   Superpeppi 

  • Gruppe: aktive Mitglieder
  • Beiträge: 819
  • Beigetreten: 11. Mai 07
  • Reputation: 15

geschrieben 13. September 2011 - 15:08

Wenn du dich schon mit VB beschäftigst, warum schreibst du dann kein Programm was die Aufgabe des Makros erledigt?

Das ganze als Konsolenanwendung sollte auch unter "System" laufen.

Dieser Beitrag wurde von Superpeppi bearbeitet: 13. September 2011 - 15:29

0

#6 Mitglied ist offline   SabineNep 

geschrieben 13. September 2011 - 20:37

Das ist leider nicht wirklich eine Option. Das was das Makro macht ist einfach zu komplex.

Frage : Wenn ich eine Konsolenanwendung schreibe die das macht was das Makro macht muss ja auch Access gestartet und beendet werden.

Ich habe mal aus Spaß ein Mini Makro in Access geschrieben. Einfach nur eine Wertzuweisung einer Variable. Aber auch dann hängt sich Access auf wenn ich das mit einen anderen Benutzer mache.



Ich hoffe immer noch das jemand eine Lösung hat :)

Dieser Beitrag wurde von SabineNep bearbeitet: 13. September 2011 - 20:40

0

#7 Mitglied ist offline   Superpeppi 

  • Gruppe: aktive Mitglieder
  • Beiträge: 819
  • Beigetreten: 11. Mai 07
  • Reputation: 15

geschrieben 14. September 2011 - 09:49

Ich weis nicht was du genau machst, aber z.B. Daten aus einer Tabelle in eine Textdatei zu schreiben wäre ja nicht die Welt und Access wird dazu auch nicht benötigt.
0

#8 Mitglied ist offline   SabineNep 

geschrieben 14. September 2011 - 10:21

@Superpeppi

Ja da hast du recht weil ich ja nur die Datenbank Engine benutze und nicht Access als ganzes "Frontend" mitschleppe.

Mein Problem ist halt daß das Access Macro andere Macros startet. Die ziehen aus vielen verschiedenen Datenbanken im Netz eine menge Daten zusammen die alle in Access zusammenlaufen. Am Ende wird eine txt Datei geschrieben die dann die neuen Daten als MySql Dump enthält.

Natürlich wäre es am besten wenn dies alles von "meinen" Programm zentral läuft aber wie gesagt das ist real keine Option.

Darum bleibt halt die Grundfrage wie man als unangemeldeter Benutzer Access benutzen kann.
0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0