Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Username / Profilname

Frage Entwicklung VB for Applications

Mitglied: wassermann

wassermann (Level 1) - Jetzt verbinden

11.08.2005, aktualisiert 16.08.2005, 28720 Aufrufe, 22 Kommentare

Hallo,
ich will in einer Profil gespeicherten Datei einen bestimmten Pfad bestimmen:
"C:\Dokumente und Einstellungen\.....\Anwendungsdaten\Microsoft\Vorlagen"

Die Pünktchen sollen durch den Profilnamen ersetzt werden. Wie wird das geschrieben?
Ich habe Username, Profilname, Environ bereits ausprobiert.

Nur wenn ich den tatsächlichen Namen eintrage, z.B. MuellerManfr wird der Pfad gefunden.

Kann einer helfen?
Danke im voraus
Mitglied: Atti58
11.08.2005 um 16:31 Uhr
... Du meinst den "%USERNAME%"?

Gruß

Atti
Bitte warten ..
Mitglied: 13830
11.08.2005 um 16:34 Uhr
Wenn ich dich richtig verstehe, willst du eine Datei in die jeweiligen Heimatverzeichnisse von (fiktiven) 20 Usern kopieren - allerdings mit einem Befehl. Oder willst du eine Datei verschiedene Verzeichnisse durchforsten lassen (Log-Datei)? Im Endeffekt ist es die Selbe Lösung: dazu bräuchtest du eine Schleife, die eine Variable (deine Pünktchen) durch einen Usernamen ersetzt, die Datei kopiert / das Verzeichnis durchforstet und anschließend die Variable auf einen neuen Usernamen setzt. Dieses ist meines Wissens jedoch nicht im Dos-Prompt möglich und die User-Namen die eingesetzt werden sollen, müssen auch entweder manuell einmal angegeben, oder aus einer Datenbank ausgelesen werden. Nun kommt es darauf an, wieviele User betroffen sind - ich denke, dass sich der Aufwand für 10-15 User nicht lohnt und du schneller bist, wenn du alles manuell eingibst.

O.K., da war Atti58 schneller - aber sowas meinte ich (btw. geht das nun im Dos-Prompt, oder nicht?)
Bitte warten ..
Mitglied: 11078
11.08.2005 um 16:40 Uhr
Hallo,

versuch mal folgendes:

<font class="code">
UserName = Environ("UserName")

' Dann die Strings und die Variable mit & zusammenführen
' Die Variable "Pfad" ist dann der komplette Pfad mit dem Usernamen

Pfad = "C:\Dokumente und Einstellungen\" & UserName & "\Anwendungsdaten\Microsoft\Vorlagen"
</font>


Gruß,
Tim

[EDIT: Der Punkt ist, dass man bei Visual Basic die Variable nicht einfach mitten in die Anführungsstriche schreiben kann, da sie sonst als normaler String interpretiert wird. Du musst den Pfad also in zwei Strings zerlegen und die Variable durch "&" mit den String concatieren, also zusammensetzen.]
Bitte warten ..
Mitglied: wassermann
11.08.2005 um 17:04 Uhr
TJa, ich danke Euch zwar - aber es funktioniert nicht.
irgendwas mache ich falsch - ich finde aber nicht den fehler.
Noch eine Idee?
Bitte warten ..
Mitglied: wassermann
11.08.2005 um 17:04 Uhr
TJa, ich danke Euch zwar - aber es funktioniert nicht.
irgendwas mache ich falsch - ich finde aber nicht den fehler.
Noch eine Idee?
Bitte warten ..
Mitglied: wassermann
11.08.2005 um 17:04 Uhr
TJa, ich danke Euch zwar - aber es funktioniert nicht.
irgendwas mache ich falsch - ich finde aber nicht den fehler.
Noch eine Idee?
Bitte warten ..
Mitglied: 11078
11.08.2005 um 17:09 Uhr
Hallo,

poste doch mal ein größeres Stück Code (den gesamten Abschnitt, wo Du den Pfad ermittelst, etc.). So kann man nicht direkt sagen, woran es liegen könnte...

Gruß,
Tim

P.S.: Du hast die Variablen schon mit DIM deklariert, oder? Also:

Dim UserName As String
Dim Pfad As String

Wenn nicht, dann ist das auf jeden Fall ein Fehler.
Bitte warten ..
Mitglied: Samtpfote
11.08.2005 um 20:15 Uhr
Versuchs mit %USERNAME%
Bitte warten ..
Mitglied: Atti58
12.08.2005 um 08:10 Uhr
... mir glaubt er ja nicht ...

Gruß

Atti
Bitte warten ..
Mitglied: 11078
12.08.2005 um 09:13 Uhr
Hallo,

glaub nicht, dass das etwas mit "glauben" zu tun hat. Die Frage wurde doch in "VB und .NET" gepostet - und %USERNAME% könnte er doch nur nutzen, wenn diese Variable in einem Systemaufruf direkt verwendet wird.

Da er aber keinen Code gepostet hat, der darauf schließen lässt, gehe ich mal davon aus, dass er den Usernamen über die Möglichketen abfragen muss, die die Programmiersprache bietet (und das ist bei VB wohl bevorzugt die Abfrage über die "environ"-Funktion).

Oder begehe ich da einen massiven Denkfehler???


Gruß,
Tim
Bitte warten ..
Mitglied: Atti58
12.08.2005 um 09:31 Uhr
@Tim

... nein, natürlich begingst Du keinen Denkfehler sondern Samti und ich - wir hatten wohl nur den Post gelesen ohne auf den Bereich zu achten ...

Gruß

Atti
Bitte warten ..
Mitglied: Samtpfote
12.08.2005 um 10:34 Uhr
@Atti
dummes katzi.... nicht mal lesen kanns....
weißt ja eh:, wie heißt's so schön in der geliebten Zauberflöte: ein Weib tut wenig, plaudert viel...
Bitte warten ..
Mitglied: Biber
13.08.2005 um 10:22 Uhr
uuuups,
hier gibts Bereiche?? *Staunend die Augen reibt*
...wieder was gelernt
Biber
P.S. Aber warum TIMs Tipps nicht helfen, verstehe ich nicht... mehr Ideen hätte ich zu dem Thema auch nicht.
F.
Bitte warten ..
Mitglied: gemini
13.08.2005 um 11:25 Uhr
<strike>Welch Wunder, diemal kein Einzeiler-Batch </strike>
Mit einem zeitlichen Abstand von 30 Min. und etwas abgekühltem Gemüt fällt mir auf: Ich hab mich wohl etwas im Ton vergriffen.
Wollte niemanden persönlich angreifen, der mir nichts getan hat, Sorry!!
~~~~~~~~~~~~~~~~~~~
Sind ein paar Zeilen mehr, aber wie heißt es so schön: "Wer schreibt, der bleibt!"

Das Script setzt voraus, das eine deutsche OS-Version installiert ist, also der Pfad zum Profilverzeichnis 31 Zeichen lang ist. Kann aber mit Instr auch dynamisch gemacht werden.
Außerdem ist der anzufügende Pfad auf "\Anwendungsdaten\Microsoft\Vorlagen" fixiert, wobei man das sicher aus der Registry auslesen könnte

' ### TemplatesPath.vbs ###
Const USER_PROFILE = &H28&

Set objShell = CreateObject("Shell.Application")
Set WshNetwork = Wscript.CreateObject("Wscript.Network")
Set objFolder = objShell.Namespace(USER_PROFILE)
Set objFolderItem = objFolder.Self

strTemplatePath = "\Anwendungsdaten\Microsoft\Vorlagen"
strProfilePath = Left(objFolderItem.Path, 31)
strUserName = WshNetwork.UserName
strDomain = WshNetwork.UserDomain
strPathNew = strProfilePath & strUserName & strTemplatePath
MsgBox strPathNew
'
Bitte warten ..
Mitglied: Samtpfote
13.08.2005 um 14:04 Uhr
Falls es Wordbasic sein soll, hab ich den schwarzen Gürtel....

In einem Wordmakro bekommst Du mit dem Befehl

x$ = Environ("USERNAME")

den Loginnamen des aktuellen Benutzer.
Den Benutzerdefinierten Vorlagenpfad kannst Du mit
zB mit

myPath$="C:\blablubb\"+x$+"\Vorlagen\"
Options.DefaultFilePath(Path:=wdUserTemplatesPath) = MyPath$

verändern.


hihi langsam kommt mir vor, wir drehen hier auf der Glatze Locken... was möchtest Du denn genau machen wassermann?

widderkatzi
Bitte warten ..
Mitglied: Biber
13.08.2005 um 15:10 Uhr
Nööööö, <font=color=blue>gemini</font>, keine Sorge,
bei jedem Stück Sourcecode, das länger als eine Zeile wird, bekomme ich immer so einen komischen "Compile error in Line 2"... deshalb bleib ich freiwillig bei meinen kleinen Onelinern.

Aber trotzdem hab ich Dein Script nicht ganz verstanden, denn der
objFolderItem.Path entspricht doch IMMER exakt dem strProfilePath & strUserName in der vorletzten Zeile. Da es doch bei sowohl bei "objFolder" wie auch bei "strUserName = WshNetwork.UserName" um denselben User geht.
Dann kannst Du ohne Informationsverlust auch die vorletzte Zeile ändern auf: strPathNew = objFolderItem.Path & strTemplatePath ..?? Oder hab ich es jetzt mit den Augen? (Ernstgemeinte Verständnisfrage).

Wenn ich VBScript könnte, hätte ich wahrscheinlich zusammengetrümmert:
' ### TemplatesPath2.vbs ###

Set objWshShell = CreateObject("Wscript.Shell")
Set WshNetwork = Wscript.CreateObject("Wscript.Network")

strProfilePath = objWshShell.SpecialFolders("AllUsersDesktop")
strProfilePath = Left(strProfilePath, Len(strProfilePath)-Len("\AllUsers.WINNT\Desktop"))
strTemplatePath = "\Anwendungsdaten\Microsoft\Vorlagen"
strUserName = WshNetwork.UserName

strPathNew = strProfilePath & vbCrLf & strUserName & strTemplatePath
MsgBox strPathNew
'

..aber für heute schließe ich mich <font color=blue>la gattina's</font> Einwurf an - wir sollten nochmal <font color=blue>wassermann</font> in Ruhe fragen, was er genau vorhat....
ich hätte zwar auch noch ein GetObject("LDAP://cn=Biber,ou=xx,dc=firma,dc=com") mit einem ProfilePath irgendwo rumliegen, aber ich glaub irgendwie gar nicht mehr, dass es nötig ist.

Liebe Wochenend-Grüße an alle Zwillinge, Wasser- und Frodermänner, Widderinnen , cystras und Attis
vom Widderbiber aus Bremen
P.S @13830 Selbstverständlich geht alles vom DOS-Prompt. *ggg
Bitte warten ..
Mitglied: gemini
13.08.2005 um 16:12 Uhr
Aber trotzdem hab ich Dein Script nicht ganz verstanden, denn der
objFolderItem.Path entspricht doch IMMER exakt dem
strProfilePath & strUserName in der vorletzten Zeile. Da es
doch bei sowohl bei "objFolder" wie auch bei "strUserName =
WshNetwork.UserName" um denselben User geht.
Dann kannst Du ohne Informationsverlust auch die vorletzte Zeile ändern auf:
strPathNew = objFolderItem.Path & strTemplatePath ..?? Oder

Das ist schon richtig Frank, objFolderItemPath gibt C:\Dokum...\<<a>username<a>> zurück.
Wenn ich wassermann richtig verstanden habe, will er <<a>username<a>> durch etwas anderes eretzten.
Ich nehme also den ersten Teil bis zum 31. Zeichen, den braucht man in jedem Fall, und setze dann halt den Usernamen wieder ein, es muss ja was drinstehen.
strUserName kann man aber belegen wie man will, strUserName = "Sepp" oder auch GetOject("LDAP://...").
Primär ging es ja um Stringverarbeitung, wie ersetze ich einen Teil durch einen anderen.
Die Pünktchen sollen durch den Profilnamen ersetzt werden.
Wie wird das geschrieben?
Ob die Rechte das dann auch zulassen steht natürlich auf einem anderen Blatt.
Außerdem hat sich wassermann nicht sehr über den Zweck des Scripts ausgelassen.
~~~~~~~~~
Bei den Onelinern heißt es dann Compile error at char 437 *gg*
Bitte warten ..
Mitglied: Biber
13.08.2005 um 17:31 Uhr
Ach sooooooo, @gemini,
Die Pünktchen sollen durch den Profilnamen ersetzt werden.
Wie wird das geschrieben?
hab wieder zu flüchtig gelesen... Das geht echt nicht als CMD-Oneliner ...da brauch ich drei Zeilen, wenn alles dokumentiert sein soll...
Bitte warten ..
Mitglied: wassermann
15.08.2005 um 07:57 Uhr
Hallo,
Zweck des ganzen ist folgender:
In dem Verzeichnis C:\........\Vorlagen sind Dokumentenvorlagen gespeichert. Egal, an welchem PC ich mich in der Firma anmelde, wird immer mein Profil geladen (da es nachts gesichert wird). Ich erhalte also immer mein Profil und kann somit auf meine eigenen Dots zugreifen.
Ich könnte natürlich als Admin an jeden PC gehen und anstatt der Pünktchen den Username eingeben, unter dem der jeweilige Anwender angemeldet ist. Da wir aber über 1.500 Anwender haben, ist mir das etwas zu viel Arbeit, jeden Morgen zu jedem Arbeitsplatz zu gehen. Deswegen gibt es eine Dot im Startup-Verzeichnis, in der stehen soll:
Public Const BasisPfad = "C:\Dokumente und Einstellungen\MaierSepp\AnwendungsdatenMicrosoft\Vorlagen". Da nicht alle MeierSepp heißen, muß hierfür m.E. ein Platzhalter gesetzt werden.
Ich muß gestehen, daß ich überhaupt keine Ahnung von VBA habe und die Makros alle schon von jemand anderem erstellt wurden, ich jetzt aber anpassen muß. Der "Jemand" ist nicht mehr in unserer Firma.
Danke für Eure Mühe - Wassermann
Bitte warten ..
Mitglied: Biber
15.08.2005 um 09:22 Uhr
Moin, Wassermann,
sorry, nicht verstanden.. bin jetzt eher verwirrt durch Deine Erklärungen...

In dem Verzeichnis C:\........\Vorlagen sind Dokumentenvorlagen gespeichert.
In C:\Dokumente und Einstellungen\MaierSepp\AnwendungsdatenMicrosoft\Vorlagen?
Oder in C:\Dokumente und Einstellungen\Admistrator\AnwendungsdatenMicrosoft\Vorlagen?
Ich erhalte also immer mein Profil und kann somit auf meine eigenen Dots zugreifen.
?? Deine Dots sind auf jedem der 1500 PCs auf Laufwerk C:\ gespeichert?? Erstaunlich... Macht das Sinn?

Deswegen gibt es eine Dot im Startup-Verzeichnis, in der stehen soll:
ähmm.. dieser Zeitenwechsel .... es gibt eine (baugleiche) *.Dot in jedem StartUp-Verzeichnis, in der heute steht ....ist das der heutige Zustand? Auf 1500 PCs?
und in dieser *dot steht also..
Public Const BasisPfad = "C:\Dokumente und Einstellungen\MaierSepp\AnwendungsdatenMicrosoft\Vorlagen".
... na gut, auch ohne VBA-Kenntnisse... da steht halt "Const BasisPfad"... was passiert den mit dieser Konstanten?
Folgt da 2 Zeilen später eine Zeile a la Samtpfötchen <font color=blue>Options.DefaultFilePath(Path:=wdUserTemplatesPath) = BasisPfad$ </font>?
Das kann m.E. weder jemand so programmiert geschweige denn an 1500 PCs verteilt haben. Ausgeschlossen. Weder Admin noch Praktikant.

Und verstanden hab ich auch einen weiteren Punkt immer noch nicht: hat (im Sollzustand) jede/r Anwender/in seine/ihre eigenen Vorlagen? Oder ist die Vorgabe, dass alle die identischen (Firmen-) Vorlagen und Standard-Dots verwenden müssen und diese auf die lokalen Rechner unter C:\...Vorlagen kopiert werden?

Sonst poste doch bitte mal dat Scriptchen, oder hat das mehr als 20 Zeilen?
Immer noch staunend
Biber
Bitte warten ..
Mitglied: gemini
15.08.2005 um 18:12 Uhr
Mir gehts wie Biber

Wenn jeder der 1500 seine eigenen Vorlagen hat ist das ja in Ordnung. Zwar ziemlich ungewöhlich für so große Organisationen, aber jeder User hat seine Vorlagen bei der Anmeldung zur Verfügung.

Wenn du den Vorlagenpfad auf eine anderes Profil verbiegen willst wird das problematisch, weil Nicht-Administratoren keine Rechte auf die Profile anderer haben.
In diesem Fall müsstest du alle 1500 User zu Admins machen, was nicht empfehlenswert ist. Allerdings brauchst du dich dann über Arbeitmangel nicht mehr zu beklagen

Wenn es dir allerdings um ein Standard-Vorlagenverzeichnis für alle User geht, kannst du das über Gruppenrichtlinien festlegen. Ganz ohne Scripting.
Dazu musst du die ADMs für die jeweilige Office-Version auf dem DC importieren.
Ich hab jetzt grad die für Office XP da; hier sind die entspr. Richtlinien in:
Benutzerkonfig. > Administr. Vorlagen > Microsoft Office XP > Shared paths > User templates path | Workgroup templates path
Ein Verzeichnis auf einem Server freigeben, die Vorlagen reinkopieren und den UNC-Pfad in die Richtlinie eintragen
Bitte warten ..
Mitglied: Samtpfote
16.08.2005 um 00:21 Uhr
*grins*
du sprichst mir aus der seele gemini.... ich weiß auch nicht so ganz was er möchte...
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Linux
gelöst URL und Username aus HTML-Datei extrahieren - sed, grep (4)

Frage von plutowitsch zum Thema Linux ...

JavaScript
SharePoint 2013 Crossdomainrequest Listitem Username zur UserID

Frage von Pandarienbaer zum Thema JavaScript ...

C und C++
gelöst Spoof Username (9)

Frage von Cloudy zum Thema C und C ...

Heiß diskutierte Inhalte
Windows Tools
gelöst Aussendienst Datensynchronisierung (12)

Frage von lighningcrow zum Thema Windows Tools ...

Windows Server
Suche passender Treiber (12)

Frage von stolli zum Thema Windows Server ...

Peripheriegeräte
Wlan stört Funkmaus (11)

Frage von Falaffel zum Thema Peripheriegeräte ...

Peripheriegeräte
gelöst USB Festplatte verliert Laufwerksbuchstabe (9)

Frage von cese4321 zum Thema Peripheriegeräte ...