forgottenrealm
Goto Top

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.

Content-Key: 175224

Url: https://administrator.de/contentid/175224

Ausgedruckt am: 28.03.2024 um 12:03 Uhr

Mitglied: Logan000
Logan000 25.10.2011 um 08:43:18 Uhr
Goto Top
Moin Moin

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.
Mitglied: ForgottenRealm
ForgottenRealm 25.10.2011 um 09:00:41 Uhr
Goto Top
Moin


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 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:

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  

Wenn ich das BatchScript von Hand starte, funktioniert alles. Sobald ich es aber von Access starten lasse, bekomme ich wieder den Fehler.