Gibt es eine Möglichkeit, den Desktop-Hintergrund von meinen Windows-Computern zu ändern, ohne die Registrierung zu bearbeiten? Da dieses Programm auf unterschiedlichen Computern ausgeführt werden, die den USB-Laufwerksbuchstaben beeinflussen könnte, ist es eine vbs, die prüft, um zu sehen, welche Laufwerksbuchstaben es eingeschaltet ist und das Foto (Ich brauche den Laufwerksbuchstaben für die Dateiursprung zu kopieren) kopieren auf dem lokalen Laufwerk. Wer weiß, wie dies zu tun? TIA
Desktop-Hintergrund ändern, ohne regedit
Nein, Sie müssen die Registrierung bearbeiten, und dies ist durch die Definition, wie das Bild referenziert wird.
Wie die obigen commen erwähnt haben, gibt es Möglichkeiten, um dieses Anliegen zu bekommen. Zum einen können Sie einen relativen Pfad anstelle von absoluten versuchen. Im folgenden Code, natürlich die messagebox entfernen.
Set WshShell = CreateObject("WScript.Shell")
msgbox WshShell.CurrentDirectory 'This returns the path of your script
Um den vollständigen Pfad zu Ihrem Skript zu erhalten, verwenden Sie einfach
msgbox WScript.ScriptFullName
Für Bonuspunkte könnten wir verwenden
msgbox CreateObject("Scripting.FileSystemObject").GetParentFolderName(WScript.ScriptFullName)
Dies würde negieren jede Besorgnis über Laufwerksbuchstaben oder wo auch immer der Ordner ist. Wenn Sie möchten, können Sie die unten den Laufwerksbuchstaben ziehen.
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objShell = CreateObject("Wscript.Shell")
strPath = objShell.CurrentDirectory
strDrive = objFSO.GetDriveName(strPath)
msgbox strDrive
Etwas, das Ihr Skript komplizieren würde, ist, dass Sie das Desktop-Bild ist noch verfügbar, nachdem das Flash-Laufwerk entfernt wird sicherstellen wollen. Sie haben zwei Möglichkeiten. Eins, können Sie Ihr Bild an einen sicheren Ort auf C kopieren :. Oder, was ich tun würde, ist ein Hörer im VBS hinzufügen, die überprüft, ob X: Laufwerk noch lesbar ist. Sobald das Flash-Laufwerk nicht angeschlossen ist, werden die vbs am Laufen halten, damit es das Laufwerk bemerken ist weg und werde dann das Desktop-Bild wieder ändern.
Einige psudocode:
Read the reg desktop location
Back it up
write new location
refresh desktop
Call Secondary Script (OR LOOP NOW to watch the drive)
Je nachdem, was Ihr Skript, so haben sie ein anderes Skript aufrufen, die für das Flash-Laufwerk überprüft, oder einfach eine Schleife im Hauptskript. Ich würde einfach ein anderes Skript so wenden Sie Ihre freies was sonst noch in der Haupt ein zu tun. Lassen Sie mich wissen, wenn Sie weitere Fragen haben!
Sie können eine Powershell-Skript-Datei set_desktop_background.ps1 erstellen
Push-Location
cd HKCU:\
Set-Itemproperty -path 'HKEY_CURRENT_USER\Control Panel\Desktop' -Name 'WallPaper' -value ''
add-type -typedefinition "using System;`n using System.Runtime.InteropServices;`n public class PInvoke { [DllImport(`"user32.dll`")] public static extern bool SetSysColors(int cElements, int[] lpaElements, int[] lpaRgbValues); }"
[PInvoke]::SetSysColors(1, @(1), @(0x663309))
Start-Process "taskkill.exe" -ArgumentList "/F /IM explorer.exe" -Wait -WindowStyle Hidden
Start-Process "explorer.exe" -WindowStyle Hidden
Pop-Location
Und dann rufen Sie es über
powershell -File C:\desktop_background\set_desktop_background.ps1 -WindowStyle Hidden