718 Aufrufe
Gefragt in Skripte(PHP,ASP,Perl...) von hallogen Experte (1.5k Punkte)
Hallo
Ahnungslos und mehr geraten als gewust habe ich mir ein VBS gebastelt.
Hier die ersten Zeilen:

On Error Resume Next
Set fs = CreateObject("Scripting.FileSystemObject")
datei1 = "C:\Users\XXXX\AppData\Roaming\Mozilla\Firefox\Profiles\original.default\SiteSecurityServiceState.txt"
datei2 = "C:\Users\XXXX\AppData\Roaming\Mozilla\Firefox\Profiles\testbrowser\SiteSecurityServiceState.txt"
datei3 = "C:\Users\XXXX\AppData\Roaming\Thunderbird\Profiles\original.default\SiteSecurityServiceState.txt"

DeleteSchreibschutz datei1
DeleteSchreibschutz datei2
DeleteSchreibschutz datei3
Sub DeleteSchreibschutz(dateiname)
If Not fs.FileExists(dateiname) Then Exit sub
Set file = fs.GetFile(dateiname)
file.Attributes = file.Attributes And Not (8+16+64+128+256+1024+2048) And Not 1
End Sub

...usw...usw...usw...


Ich würde in der Zeile 3-5 gerne "XXXX" mit der Variablen %Username%" ersetzen.
Es gibt sicher jemand der mir weiterhelfen kann.
Danke.

10 Antworten

0 Punkte
Beantwortet von massaraksch Experte (3.1k Punkte)
Eine Möglichkeit:
strUser = CreateObject("WScript.Network").UserName

Eine andere wäre, gleich den Roaming-Pfad mittels SpecialFolders zu ermitteln:
strAppData = CreateObject("WScript.Shell").SpecialFolders("APPDATA")

Dann bekommt du in strAppData gleich das Verzeichnis AppData\Roaming:

C:\Users\Benutzername\AppData\Roaming

mfg, Massaraksch
0 Punkte
Beantwortet von massaraksch Experte (3.1k Punkte)
Nachtrag: Könntest auch über das Environment gehen:
strUser = CreateObject("WScript.Shell").ExpandEnvironmentStrings("%USERNAME%")

mfg, M.
0 Punkte
Beantwortet von massaraksch Experte (3.1k Punkte)
Oder über Environment-Process...

Alles zusammen als Übersicht:
strUser1 = CreateObject("WScript.Network").UserName
wscript.echo strUser1

strUser2 = CreateObject("WScript.Shell").ExpandEnvironmentStrings("%USERNAME%")
wscript.echo strUser2

strUser3 = CreateObject("WScript.Shell").Environment("PROCESS").Item("USERNAME")
wscript.echo strUser3

strProfil = CreateObject("WScript.Shell").Environment("PROCESS").Item("USERPROFILE")
wscript.echo strProfil

strAppData = CreateObject("WScript.Shell").SpecialFolders("APPDATA")
wscript.echo strAppData

mfg, M.
0 Punkte
Beantwortet von hallogen Experte (1.5k Punkte)
Danke.
Ich habe gleich den Ersten genomme. Wenns recht ist.
Der entsprach am ehesten meinem derzeitigen IQ.
0 Punkte
Beantwortet von massaraksch Experte (3.1k Punkte)
Ist ja egal... Hauptsache, es funktioniert :o)

mfg, M.
0 Punkte
Beantwortet von hallogen Experte (1.5k Punkte)
Zu frpüh gefreut :(
"On Error Resume Next" hat mir einen Strich durch die Rechnung gemacht.
Hier mal ein verkürztes Testscript wie ich mir das dachte.


Set fs = CreateObject("Scripting.FileSystemObject")
strUser1 = CreateObject("WScript.Network").UserName
datei1 = "C:\Users\UserName\Desktop\test.txt"

DeleteSchreibschutz datei1
Sub DeleteSchreibschutz(dateiname)
If Not fs.FileExists(dateiname) Then Exit sub
Set file = fs.GetFile(dateiname)
file.Attributes = file.Attributes And Not (8+16+64+128+256+1024+2048) And Not 1
End Sub
fs.DeleteFile datei1
fs.CreateTextFile datei1
SetSchreibschutz datei1
Sub SetSchreibschutz(dateiname)
If Not fs.FileExists(dateiname) Then Exit sub
Set file = fs.GetFile(dateiname)
file.Attributes = file.Attributes And Not (8+16+64+128+256+1024+2048) Or 1
End Sub
0 Punkte
Beantwortet von massaraksch Experte (3.1k Punkte)
Du erzeugst die Variable strUser1. Die mußt du natürlich auch benutzen!

Statt:
datei1 = "C:\Users\UserName\Desktop\test.txt"

So:
datei1 = "C:\Users\strUser1\Desktop\test.txt"

mfg, Massaraksch
0 Punkte
Beantwortet von massaraksch Experte (3.1k Punkte)
PS: On Error Resume Next ist immer schlecht zum Testen ;-)
0 Punkte
Beantwortet von massaraksch Experte (3.1k Punkte)
Moment... Jetzt hab ich auch einen Fehler oben drin. Korrektur:
datei1 = "C:\Users\" & strUser1 & "\Desktop\test.txt"

Das muß ja bei VBS mit & zusammengesetzt werden.

Ich "lebe" meist in der Powershell, da kann man solche Sachen einfacher verwenden ;-)

mfg, M.
0 Punkte
Beantwortet von hallogen Experte (1.5k Punkte)
Na also ,geht doch :) Prima!

Ich hatte das eigntlich auch so und ähnlich in allen möglichen Varianten mit dem "strUser".
Ich kannte das eigentlich auch so von LSL.
Auf die "&" wäre ich im Leben nicht gekommen . Das ließ sich auch von mir nicht ergoogeln.
"On Error Resume Next" hatte ich eingebaut weil weiter unten im Script " Delete" auf Dateien verweist die möglicherweise noch garnicht vorhanden sind . Das könnte man sicher auch anders lösen...aber nicht ich :)
Achja LSL - das Einzige wo ich es mal zu nennenswerten Erfolgen gebracht habe, ist die Scripterei in dem Onlinegame "SeconLife"
...