Access 2003 und das System32 Verzeichnis
Guten Morgen!
Ich habe eine Funktion geschrieben, mit der ich mich über Remotedesktop angemeldete Rechner wieder abmelden kann und der Benutzer seinen Bildschirm sofort wieder hat (Ohne Passworteingabe ect)
Unter Batch funktioniert es gut, solange ich das Batchscript direkt und nicht durchandere Programme (Access ...) aufrufe.
Das Problem an der Sache ist, dass sobald ich auf einem Clientrechner mit Windows 64 Bit bin, das meine Funktion den Pfad C:\Windows\System32\tscon.exe nicht mehr findet.
Im berüchtigten SysWOW64 Ordner gibt es keine tscon.exe, auf die Access in dem Moment zugreifen könnte, weils ja ein 32 Bit Programm ist.
Testweise hab ich mir die Datei direkt auf C: kopiert und siehe da, von dort aus kann sie ausgeführt werden.
Nach einem Umbau der Funktion (diese erstellt nun über Print eine Batchdatei die nach Erstellung ausgeführt wird, deren Funktionsweise identisch ist) funktioniert es nicht, da das Batchscript in dem Moment in dem es von Access aufgerufen wird, den o.g. Pfad ebenfalls nicht findet.
Ich gehe mal davon aus, das die gesamte Problematik mit Access (32 Bit) und Windows\System32 bekannt ist und hoffe auf eine Lösung.
Ich habe eine Funktion geschrieben, mit der ich mich über Remotedesktop angemeldete Rechner wieder abmelden kann und der Benutzer seinen Bildschirm sofort wieder hat (Ohne Passworteingabe ect)
Unter Batch funktioniert es gut, solange ich das Batchscript direkt und nicht durchandere Programme (Access ...) aufrufe.
Das Problem an der Sache ist, dass sobald ich auf einem Clientrechner mit Windows 64 Bit bin, das meine Funktion den Pfad C:\Windows\System32\tscon.exe nicht mehr findet.
Im berüchtigten SysWOW64 Ordner gibt es keine tscon.exe, auf die Access in dem Moment zugreifen könnte, weils ja ein 32 Bit Programm ist.
Testweise hab ich mir die Datei direkt auf C: kopiert und siehe da, von dort aus kann sie ausgeführt werden.
Nach einem Umbau der Funktion (diese erstellt nun über Print eine Batchdatei die nach Erstellung ausgeführt wird, deren Funktionsweise identisch ist) funktioniert es nicht, da das Batchscript in dem Moment in dem es von Access aufgerufen wird, den o.g. Pfad ebenfalls nicht findet.
Ich gehe mal davon aus, das die gesamte Problematik mit Access (32 Bit) und Windows\System32 bekannt ist und hoffe auf eine Lösung.
2 Antworten
- LÖSUNG Logan000 schreibt am 25.10.2011 um 08:43:18 Uhr
- LÖSUNG ForgottenRealm schreibt am 25.10.2011 um 09:00:41 Uhr
LÖSUNG 25.10.2011 um 08:43 Uhr
Moin Moin
Ich verstehe dein Problem nicht so ganz.
Und was ruft die tscon jetzt auf Access oder ein Batch?
Ich glaube es wäre hilfreich, den Batch und den Aufruf aus Access mal zu posten, denn so verstehe ich nicht wirklich wo das Problem ist.
Gruß L.
Ich verstehe dein Problem nicht so ganz.
Das Problem an der Sache ist, dass sobald ich auf einem Clientrechner mit Windows 64 Bit bin, das meine Funktion den Pfad C:\Windows\System32\tscon.exe nicht mehr findet.
Ich finde die tscon.exe unter Win 7 32/64 bit imm er unter %Systemroot%\System32\.Und was ruft die tscon jetzt auf Access oder ein Batch?
Ich glaube es wäre hilfreich, den Batch und den Aufruf aus Access mal zu posten, denn so verstehe ich nicht wirklich wo das Problem ist.
Gruß L.
LÖSUNG 25.10.2011 um 09:00 Uhr
Moin
Unter Access 2003 führe ich folgende Funktion aus:
Das Shell Fenster bleibt nach dem Durchlauf offen (/K) und sagt mir, C:\Windows\System32\tscon.exe gibts nicht
Das Ursprüngliche Batchscript schaut so aus:
Wenn ich das BatchScript von Hand starte, funktioniert alles. Sobald ich es aber von Access starten lasse, bekomme ich wieder den Fehler.
Unter Access 2003 führe ich folgende Funktion aus:
Dim o As OSVERSIONINFO
Dim TV_ShellRunCode As String
Dim ProgrammAusfuehren
Dim WinVer As String
Dim WindowsVersion As String
Dim TV_SystemOrdner As String
'Objekte
Dim MyFSO As FileSystemObject
Set MyFSO = CreateObject("Scripting.FileSystemObject")
o.dwOSVersionInfoSize = Len(o)
GetVersionEx o
'Windows Version auslesen
WindowsVersion = o.dwMajorVersion & "." & o.dwMinorVersion & "." & o.dwBuildNumber
TV_SystemOrdner = GetSpecialFolder(System)
MsgBox TV_SystemOrdner
'Filtern
Select Case WindowsVersion
Case "5.1.2600"
WinVer = "Windows XP Service Pack 3"
TV_ShellRunCode = TV_SystemOrdner & "\" & "tscon.exe 0 /dest:console"
Case "5.2.3790"
WinVer = "Windows Server 2003"
TV_ShellRunCode = TV_SystemOrdner & "\" & "tscon.exe 0 /dest:console"
Case "6.0.6000"
WinVer = "Windows Vista"
TV_ShellRunCode = TV_SystemOrdner & "\" & "tscon.exe 1 /dest:console"
Case "6.0.6001"
WinVer = "Windows Vista Service Pack 1 / Windows Server 2008 Service Pack 1"
TV_ShellRunCode = TV_SystemOrdner & "\" & "tscon.exe 1 /dest:console"
Case "6.0.6002"
WinVer = "Windows Vista Service Pack 2 / Windows Server 2008 Service Pack 2"
TV_ShellRunCode = TV_SystemOrdner & "\" & "tscon.exe 1 /dest:console"
Case "6.1.7600"
WinVer = "Windows Windows 7 / Windows Server 2008 R2"
TV_ShellRunCode = TV_SystemOrdner & "\" & "tscon.exe 1 /dest:console"
Case "6.1.7601"
WinVer = "Windows 7 Service Pack 1 / Windows Server 2008 R2 Service Pack 1"
TV_ShellRunCode = TV_SystemOrdner & "\" & "tscon.exe 1 /dest:console"
Case "6.1.7602"
WinVer = "Windows 7 Service Pack 2 / Windows Server 2008 R2 Service Pack 2"
TV_ShellRunCode = TV_SystemOrdner & "\" & "tscon.exe 1 /dest:console"
Case Else
WinVer = "Unknown"
TV_ShellRunCode = "Unknown"
End Select
MsgBox TV_ShellRunCode
'Nur ausführen wenn eine Windows Version identifiziert wurde
If Not TV_ShellRunCode = "Unknown" Then
ProgrammAusfuehren = Shell("cmd /K " & TV_ShellRunCode)
End If
Set MyFSO = Nothing
Das Ursprüngliche Batchscript schaut so aus:
for /F "delims=" %%I IN ('ver^|findstr /c:"5.00.2195"') DO %WINDIR%\System32\tscon.exe 0 /dest:console
for /F "delims=" %%I IN ('ver^|findstr /c:"5.1.2600"') DO %WINDIR%\System32\tscon.exe 0 /dest:console
for /F "delims=" %%I IN ('ver^|findstr /c:"5.2.3790"') DO %WINDIR%\System32\tscon.exe 0 /dest:console
for /F "delims=" %%I IN ('ver^|findstr /c:"6.0.6000"') DO %WINDIR%\System32\tscon.exe 1 /dest:console
for /F "delims=" %%I IN ('ver^|findstr /c:"6.0.6001"') DO %WINDIR%\System32\tscon.exe 1 /dest:console
for /F "delims=" %%I IN ('ver^|findstr /c:"6.0.6002"') DO %WINDIR%\System32\tscon.exe 1 /dest:console
for /F "delims=" %%I IN ('ver^|findstr /c:"6.1.7600"') DO %WINDIR%\System32\tscon.exe 1 /dest:console
for /F "delims=" %%I IN ('ver^|findstr /c:"6.1.7601"') DO %WINDIR%\System32\tscon.exe 1 /dest:console