kattnerzone
Goto Top

Exel Datei gespeert geöffnet, speerender Benutzername falsch

Hallo,
ich habe folgendes Problem:
Hier im Netzwerk liegt eine Exeltabelle in die von meheren Benutzern Daten eingetragen werden. Wenn ein Benutzer die Datei öffnen will, wenn sie gerade von einem anderen geöffnet ist, bekommt er die Meldung Datei ist zum Bearbeiten durch administrator gesperrt.
Es ist sehr eigenartig das bei manchen Benutzern der AD Name steht und bei sehr vielen da nur administrator steht, wenn sie die Datei offen haben.
Habt ihr eine Idee wo man das vielleicht einstellen kann oder welche Einstellungen ich kontrollieren muss. Ist nämlich blöd, da man dadurch nicht nachvollziehen kann, wer die Datei offen hat um die Person dann anzusprechen, da er die Datei bitte schließen soll.
Kommentar vom Moderator Biber am 20.11.2009 um 11:01:14 Uhr
Beitrag jetzt nach Beantwortung der Anschlussfragen caschopls wieder auf "Gelöst" gesetzt und geschlossen.
Kommentar von Moderator Biber am 20.11.2009 um 11.01.14
Farbe des Erledigt-Hakens wegen neuer Nach-Hakerei (hoffentllich temporär) wieder auf transparent geändert.

Content-ID: 85204

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

Ausgedruckt am: 22.11.2024 um 18:11 Uhr

60730
60730 10.04.2008 um 19:48:24 Uhr
Goto Top
Hi,

Du meist sicherlich Excel face-wink - aber Welche Version genau bitte schön?

Das "kommt" davon, wenn der "Administrator" die Software installiert *lach*

Unter Office 2000 z.B findest du diesen Wert als Binary
HKEY_CURRENT_USER\Software\Microsoft\Office\9.0\Common\UserInfo\UserName

"So" einfach bekommst du da aber nicht den gewünschten Eintrag rein, denn dort muß ein "Reg_Binary" Wert drin stehen.

Bedank dich dann bitte nicht bei mir, sondern bei Stefan Bolz.
http://www.microsoft.com/communities/newsgroups/en-us/default.aspx?dg=m ...

Office2000.vbs
on error resume next

Set fso = Wscript.CreateObject("scripting.FileSystemObject")  
Set WshShell = Wscript.CreateObject("Wscript.Shell")  
Set WSHNetwork = WScript.CreateObject("WScript.Network")  
Set WshSysEnv = WshShell.Environment("PROCESS")  
USERNAME = WshSysEnv("USERNAME")  

Set fi = fso.OpenTextFile (TEMP & "\OfficeUser.reg",2,true)  
fi.WriteLine ("Windows Registry Editor Version 5.00")  
fi.WriteLine ("")  
fi.WriteLine ("[HKEY_CURRENT_USER\Software\Microsoft\Office\9.0\Common\UserInfo]")  
fi.WriteLine (chr(34) & "UserName" & chr(34) & "=hex:" & change2unicode(USERNAME))  
fi.close

wscript.sleep (1000)
WshShell.Run chr(34) & "regedit.exe" & chr(34) & " /s " & chr(34) & TEMP & "\OfficeUser.reg" & chr(34),,True   

WScript.Quit (0)

function change2unicode(text)
for i = 1 to len(text)
RegBinary = RegBinary & hex(asc(mid(text,i,1))) & ",00,"  
next
change2unicode = RegBinary & "00,00"  
end function 
kattnerzone
kattnerzone 14.04.2008 um 09:18:59 Uhr
Goto Top
Ja es ist Exel. Hier ist Office XP installiert, dürfte dann die 2000 Version sein.
Habe mir das mal in der Registry angeschaut und teilweise sind die Werte auch richtig. Bei den meisten Personen geht das dann auch, nur bei einem steht XXX, obwohl der Hexwert das richtige Kürzel darstellt. Keine Ahnung wie das kommt, ist aber nicht ganz so tragisch, da man weiß werr XXX ist.
Jetzt hat sich noch ein zusätzliches Problem aufgetan. Die Benutzer öffnen die Datei auch in einer Terminalsitzung und da ist Office logischerweise nur einmal als Admin installiert. Gibt es da noch eine Möglichkeit das mit den Namen hinzubekommen?
60730
60730 14.04.2008 um 12:11:05 Uhr
Goto Top
Ja es ist Excel. Hier ist Office XP
installiert, dürfte dann die 2000
Version sein.

Hi,

Office 2000 (Office 9) ist NICHT Office XP (Office 10) und umgekehrt.

Dementsprechend solltest du in folgender Zeile schon den Schlüssel Office\ 10.0\ eintragen.

fi.WriteLine ("[HKEY_CURRENT_USER\Software\Microsoft\Office\10.0\Common\UserInfo]")

Ps: Bei Office 2003 wäre der Schlüssel Office 11.0, aber bei dieser Version hat es Microsoft "gemerkt"

Pss:
Wenn du auf dem Fileserver mit rechtsklick auf den Arbeitsplatz "manage" anklickst und im erscheinenden "Fenster" auf Computer Management\Shared Folders\Open Files" gehst, siehst du, wer (Anmeldename) welche Datei geöffnet hat. face-wink
kattnerzone
kattnerzone 14.04.2008 um 14:05:38 Uhr
Goto Top
Ja ich hatte das auch in der 10 Version geöffnet und da den Wert gefunden.
Das ich als Admin mir angucken kann, wer die Datei geöffnet hat, kenne ich. Bloß da können ja die normalen Benutzer nicht ran. Wenn sie die Datei vom Rechner aus öffnen, wird der Anmeldename auch richtig angezeigt. Nur wenn sie sich dann am Terminalserver anmelden und die Datei da öffnen wird da administrator angezeigt.
Biber
Biber 26.02.2009 um 20:44:04 Uhr
Goto Top
Moin Kattnerzone,

da ich gerade auf Deinen Beitrag (wegen T-Mos Ausführungen und Recherche) verwiesen habe:
Könntest Du bitte
  • den Beitrag als "gelöst" kennzeichnen, wenn es geholfen hat
-oder-
  • nochmal nachhaken und beschreiben, was noch klemmt, wenn es nicht geholfen hat?
- und unabhängig von der Fallunterscheidung gerade -
  • bitte bitte das "Exel Datei gespeert geöffnet, falsche Benutzerangabe" im Titel an mein hier im Forum bekanntes Ästhetik- und Harmoniebedürfnis anpassen?

Danke dafür
Biber
kattnerzone
kattnerzone 26.02.2009 um 22:17:22 Uhr
Goto Top
Problem hat sich erledigt.

Wie soll ich den Titel ändern? Weißt nicht wie die Ästhetik- und Harmoniebedürfnisse aussehen.
Bitte um ein Beispiel.
Biber
Biber 26.02.2009 um 22:58:39 Uhr
Goto Top
Moin kattnerzone,

och, ein Beispiel ist einfach:

Der Titel jetzt (vielversprechend):
Exel Datei gespeert geöffnet, falsche Benutzerangabe

Der Titel vielversprechender:
Exel Datei gespeert geöffnet, speerender Benutzername falsch

Wenn Du möchtest.... ich hätte keinerlei Probleme damit, ein Dutzend Alternativen anzubieten... face-wink

Ich dank Dir auf jeden Fall für das schnelle Feedback und Auf-Erledigt-setzen.

Grüße
Biber
Biber
Biber 27.02.2009 um 19:49:39 Uhr
Goto Top
Na super, kattnerzone,
Exel Datei gespeert geöffnet, speerender Benutzername falsch
hat doch prima geklappt.

Meine seliger Onkel Herbert hat auch immer gesagt:
"Junge, Du musst nur vernünftig mit den Leuten reden, dann bekommst Du alles, was Du willst."

Was hiermit bewiesen wäre.
Jetzt kann ich beruhigter schlafen.

Danke Dir und schönes Wochenende
Biber
XcaschoX
XcaschoX 19.11.2009 um 13:29:16 Uhr
Goto Top
Hallo,
danke erstmal,
aber beim Ausführen bekomme ich folgende Fehlermeldung:

Skript: hier steht der Name
Zeile 13
Zeichen 1
Fehler: Anweisung erwartet
Code 800A0400
Quelle Kompilierungsfehler in Microsoft VBScript

Habe das Script auf officeXP wie folgt angepasst:
("[HKEY_CURRENT_USER\Software\Microsoft\Office\11.0\Common\UserInfo]")

Muss noch folgende Anmerkung machen, wir melden uns mit Novell an den PC´s an. Kann das den Fehler verursachen?

Danke für die Hilfe

LG
Carsten
Biber
Biber 19.11.2009 um 20:33:54 Uhr
Goto Top
Moin caschopi,

eigentlich hatte ich gehofft, dass ich in diesem Beitrag keinen Kommentar mehr schreibe, aber...

What shall's.

a) Wenn irgendwo in einem VBSkript-Schnipselchen die Zeile "On Error Resume Next" steht, bedeutet das, dass der Verfasser der Meinung ist, bei ihm auf dem Rechner läuft es/lief es mindestens einmal und wer Fehlermeldungen sehen will ist ein Weichei.
Dennoch sollte jede/r, der/die irgendwo in diesen World-Wide-Wurschtelforen einen Schnipsel mit dieser Zeile aufliest, genau diese Zeile als erstes auskommentieren.

b) Richtige Hasenfüße (so wie ich) ändern dann alles (ggf. in mehreren Etappen) so ab, das zuerst nur angezeigt wird, was passieren würde beim nächsten Etappenziel.

Deshalb würde mein geCopy&Pasteter Schnipsel im ersten Step so aussehen:
'on error resume next  
Set fso = Wscript.CreateObject("scripting.FileSystemObject")  
Set WshShell = Wscript.CreateObject("Wscript.Shell")  
Set WSHNetwork = WScript.CreateObject("WScript.Network")  
Set WshSysEnv = WshShell.Environment("PROCESS")  
USERNAME = WshSysEnv("USERNAME")  
wscript.echo TEMP & "\OfficeUser.reg"  
wscript.quit
'----------hier ist Ende der ersten Etappe!! ---  
Set fi = fso.OpenTextFile (TEMP & "\OfficeUser.reg",2,true)  
fi.WriteLine ("Windows Registry Editor Version 5.00")  
fi.WriteLine ("")  
fi.WriteLine("[HKEY_CURRENT_USER\Software\Microsoft\Office\9.0\Common\UserInfo]")  
fi.WriteLine (chr(34) & "UserName" & chr(34) & "=hex:" & change2unicode(USERNAME))  
fi.close

' wscript.sleep (1000)  

' WshShell.Run chr(34) & "regedit.exe" & chr(34) & " /s " & chr(34) & TEMP &  
' "\OfficeUser.reg" & chr(34),,True  

WScript.Quit (0)

function change2unicode(text)
for i = 1 to len(text)
RegBinary = RegBinary & hex(asc(mid(text,i,1))) & ",00,"  
next
change2unicode = RegBinary & "00,00"  
end function 
... und dabei würde ich feststellen, dass bei mir (und bei dir dito) das locker hingeworfene TEMP zu etwas aufgelöst wird, dass auch als der große wirtschaftspolitische Plan der FDP bekannt ist.

Angezeigt wird jedenfalls als Ergebnis der Zeilen 07/08 oben:
>cscript e:\schnipsel\writeofficeReg.vbs
\OfficeUser.reg
...d.h. bei mir würde, weil ich als Admin unterwegs bin und auf Laufwerk D: im Rootverzeichnis eine Datei OfficeUser.reg geschieben werden.
Da du vermutlich auf Laufwerk C:\ unterwegs bist, bekommst du sofort eine aufs Maul, weil so etwas wirklich nicht sein können sollte.

Sorge dafür, dass bei dir irgendwohin geschrieben wird, wo Schreibrechte vorhanden sind und/oder initialisiere die Variable Temp.

Grüße
Biber
XcaschoX
XcaschoX 23.11.2009 um 10:35:15 Uhr
Goto Top
Hallo Biber,
also mein script liegt auf "D" und dort führe ich es auch aus, bin als Admin unterwegs un bekomme folgende Meldung:

C:\>cscript d:\username.vbs
Microsoft (R) Windows Script Host, Version 5.7
Copyright (C) Microsoft Corporation 1996-2001. Alle Rechte vorbehalten.
d:\username.vbs(13, 1) Kompilierungsfehler in Microsoft VBScript: Anweisung erwartet
C:\

und passieren tut nix.

Hast Du noch einen Tipp?

Danke
Carsten
XcaschoX
XcaschoX 23.11.2009 um 10:36:24 Uhr
Goto Top
Biber,
was meinst du mit

"und/oder initialisiere die Variable Temp."

bin nicht so fit in vbs....

Gruß
Carsten
Biber
Biber 23.11.2009 um 11:23:30 Uhr
Goto Top
Moin caschopl,

versuchen wir uns mal heranzutasten....

was meinst du mit
"und/oder initialisiere die Variable Temp."

Damit meine ich, dass die aus unerfindlichen Gründen und mit beiläufiger Selbstverständlichkeit im Schnipsel erwähnte Variable TEMP zwar -vergleichbar einem Wirtschaftssachverständigen der FDP- einen ganz furchtbar wichtigen Eindruck hinterlassen soll, aber absolut inhaltsleer ist.

Mit "initialisieren" meine ich, dass diese Variable -im Gegensatz zu einem Wirtschaftspolitiker der FDP- relativ schnell mit brauchbaren Inhalten gefüllt werden kann, indem sie analog der eine Zeile höher verwendeten Variablen USERNAME aus den gesetzten Umgebungsvariablen ermittelt wird.

Auf deutscher:
...
'   Jetzt bereits im Script:  
Set WshSysEnv = WshShell.Environment("PROCESS")  
USERNAME = WshSysEnv("USERNAME")  
' Analog dazu neu ins Skript aufnehmen:  
TEMP = WshSysEnv("TEMP")  
...

Soweit zu deiner zweiten Frage - die nun überhaupt nix mit "ich bin aber nicht fit in vbs" zu tun hat.
Sondern eigentlich nur mit Analogien. face-wink

Mit deinem vorangegenagenen Kommentar habe ich ein wenig mehr Probleme...
Du schreibst:
..d:\username.vbs(13, 1) Kompilierungsfehler in Microsoft VBScript: Anweisung erwartet
öhm.... auf welche Zeile 13 mag sich das denn beziehen? Mein an dich geposteter Schnipsel kommt gar nicht soweit..

Bitte teste zur Fehlereingrenzung erstmal diesen hier:
'on error resume next  
Set fso = Wscript.CreateObject("scripting.FileSystemObject")  
Set WshShell = Wscript.CreateObject("Wscript.Shell")  
Set WSHNetwork = WScript.CreateObject("WScript.Network")  
Set WshSysEnv = WshShell.Environment("PROCESS")  
USERNAME = WshSysEnv("USERNAME")  
TEMP = WshSysEnv("TEMP")  
wscript.echo TEMP & "\OfficeUser.reg"  

Set fi = fso.OpenTextFile (TEMP & "\OfficeUser.reg",2,true)  
fi.WriteLine ("Windows Registry Editor Version 5.00")  
fi.WriteLine ("")  
fi.WriteLine("[HKEY_CURRENT_USER\Software\Microsoft\Office\9.0\Common\UserInfo]")  
fi.WriteLine (chr(34) & "UserName" & chr(34) & "=hex:" & change2unicode(USERNAME))  
fi.close
wscript.quit
' wscript.sleep (1000)  

' WshShell.Run chr(34) & "regedit.exe" & chr(34) & " /s " & chr(34) & TEMP &  
' "\OfficeUser.reg" & chr(34),,True  

WScript.Quit (0)

function change2unicode(text)
for i = 1 to len(text)
RegBinary = RegBinary & hex(asc(mid(text,i,1))) & ",00,"  
next
change2unicode = RegBinary & "00,00"  
end function 
... der zwar niicht alles macht, aber zumindest ANZEIGEN sollte, wo und welche *.reg-Datei angelegt wird.
Beispiel (wenn der Schnipsel e:\schnipsel\writeOffice.vbs heißen würde wie bei mir)
Antesten am CMD-Prompt7 das ">" in der ersten Zeile nicht mit eingeben)
>cscript e:\schnipsel\writeofficeReg.vbs
C:\DOKUME~1\Biber\LOKALE~1\Temp\OfficeUser.reg
-->die Ausgabe in der 2. Zeile zeigt an, wo diese *.reg erzeugt wurde.
Mit Copy&Paste kannst du dann ein "type C:\DOKUME~1\Biber\LOKALE~1\Temp\OfficeUser.reg" zusammenbasteln und den Inhalt prüfen.

Bitte nimm jetzt zur Fehlersuche diesen Schnipsel, sonst finden wir nienich das Problem.

Grüße
Biber
XcaschoX
XcaschoX 23.11.2009 um 12:26:38 Uhr
Goto Top
Hallo Biber,
es hat funktioniert. das script bastelt die Regdatei.

Cool.

Sieht gut aus.

LG

Carsten
Biber
Biber 23.11.2009 um 12:32:09 Uhr
Goto Top
Moin caschopi,

darf ich annehmen, dass du jetzt auch das Muster verstanden hast, nach dem ich schrittweise die Simulation und die Zeile "Wscript.quit" immer weiter nach hinten verschiebe, bis irgendwann das vollständige Skript an- und durchgetetstet istß

Und if so, testest du jetzt selbsttätig weiter und postest deine Erkenntnisse?

Grüße
Biber
XcaschoX
XcaschoX 23.11.2009 um 16:47:25 Uhr
Goto Top
Hallo Biber,

sobald ich das "wscript.quit " nach die Zeile "WshShell.Run chr(34) & "regedit.exe" & chr(34) & " /s " & chr(34) & TEMP &" setze kommt folgende Meldung:

d:\username1.vbs(23, 76) Kompilierungsfehler in Microsoft VBScript: Syntaxfehler

und was sagt mir das jetzt?

Gruß
Carsten
Biber
Biber 23.11.2009 um 18:18:42 Uhr
Goto Top
Moin caschopl,

das bedeutet, dass wir auf dem richtigen Weg sind... die .reg-Datei wird geschrieben, hat vermutlich auch brauchbaren Inhalt, aber...

Die Zeile, in der dieses .reg-Datei mittels "Reg.exe /s" eingefügt wird ist eben eine Zeile.
Siehe die Zeile 17 ganz oben in TimoBeils erstem Kommentar.
Sorry, das hatt ich ein bisschen unglücklich auskommentiert...mein Fehler.

Übernimm bitte die Zeile 17 von oben.
Dann sollte es eigentlich fliegen.

Grüße
Biber
XcaschoX
XcaschoX 24.11.2009 um 08:19:16 Uhr
Goto Top
hallo biber,
erste sahne, das ganze funktioniert.
Super vielen Dank. Jetzt muss ich dass danze nur noch ins LoginScript bauen und schon ist die sache geritzt.

Danke nochmals

LG
Carsten