Anpassung Registry bei einem bereitgestellten Image
Hallo zusammen,
ich ändere bei einem bereitgestellten Windows 10 Image (1803) in der Registry ein paar Einstellungen.
Hierbei habe ich das Problem, dass anschließend auf das bereitgestellte Image noch ein Prozess zugreift, wodurch ich beim aufheben der Bereitstellung eine Fehlermeldung erhalte.
Fehlerausgabe:
Dismount-WindowsImage | Unsuccessful
Path : C:\Windows_Home\Windows 1803\Mount
ImagePath : C:\Windows_Home\Windows 1803\DiskImage\sources\install.wim
ImageIndex : 5
MountMode : ReadWrite
MountStatus : Ok
Der Prozess kann nicht auf die Datei zugreifen, da sie von einem anderen Prozess verwendet wird.
oder
Dismount-WindowsImage | Unsuccessful
Path : C:\Windows_Home\Windows 1803\Mount
ImagePath : C:\Windows_Home\Windows 1803\DiskImage\sources\install.wim
ImageIndex : 5
MountMode : ReadWrite
MountStatus : Invalid
Die Bereitstellung des Verzeichnisses konnte nicht vollständig aufgehoben werden. Dies ist normalerweise darauf zurückzuführen, dass im Bereitstellungsverzeichnis noch Dateien von Anwendungen geöffnet sind. Schließen Sie diese Dateien, und wiederholen Sie die Aufhebung der Bereitstellung, um den Vorgang abzuschließen.
Hierzu habe ich im Netz einen Tipp mit dem "[System.GC]::Collect()" gefunden, aber das Problem besteht weiterhin.
Gibt es hier noch weitere Möglichkeiten, um sicher zu stellen, dass alle Dateizugriffe abgeschlossen sind?
Vielen Dank im Voraus für Eure Unterstützung.
Auszug des Scriptes:
Beispiel einer Reg.ps1, welche ich mittels in das Script lade:
Gruß
Markus2016
ich ändere bei einem bereitgestellten Windows 10 Image (1803) in der Registry ein paar Einstellungen.
Hierbei habe ich das Problem, dass anschließend auf das bereitgestellte Image noch ein Prozess zugreift, wodurch ich beim aufheben der Bereitstellung eine Fehlermeldung erhalte.
Fehlerausgabe:
Dismount-WindowsImage | Unsuccessful
Path : C:\Windows_Home\Windows 1803\Mount
ImagePath : C:\Windows_Home\Windows 1803\DiskImage\sources\install.wim
ImageIndex : 5
MountMode : ReadWrite
MountStatus : Ok
Der Prozess kann nicht auf die Datei zugreifen, da sie von einem anderen Prozess verwendet wird.
oder
Dismount-WindowsImage | Unsuccessful
Path : C:\Windows_Home\Windows 1803\Mount
ImagePath : C:\Windows_Home\Windows 1803\DiskImage\sources\install.wim
ImageIndex : 5
MountMode : ReadWrite
MountStatus : Invalid
Die Bereitstellung des Verzeichnisses konnte nicht vollständig aufgehoben werden. Dies ist normalerweise darauf zurückzuführen, dass im Bereitstellungsverzeichnis noch Dateien von Anwendungen geöffnet sind. Schließen Sie diese Dateien, und wiederholen Sie die Aufhebung der Bereitstellung, um den Vorgang abzuschließen.
Hierzu habe ich im Netz einen Tipp mit dem "[System.GC]::Collect()" gefunden, aber das Problem besteht weiterhin.
Gibt es hier noch weitere Möglichkeiten, um sicher zu stellen, dass alle Dateizugriffe abgeschlossen sind?
Vielen Dank im Voraus für Eure Unterstützung.
Auszug des Scriptes:
Get-PSDrive -PSProvider Registry | Where-Object {$_} | Select-Object -ExpandProperty Name | ForEach-Object {Start-Process -FilePath "REG.EXE" -ArgumentList "Unload $_" -Wait -WindowStyle Hidden; Remove-PSDrive -Name $_}
$Checked | ForEach-Object {
. "$Project\Registry\$($_.Name)"
Start-Process -PassThru -FilePath "REG.EXE" -ArgumentList "Load $(Set-RegKey) ""$(Set-RegPath)""" -Wait -WindowStyle Hidden
New-PSDrive -Name $(Set-Reg) -PSProvider Registry -Root $(Set-RegRoot)
IF (!(Test-Path $(Set-HivePath)))
{
New-Hive
Set-Hive
} else {
Set-Hive
}
$i = 0
while ((Test-Path $(Set-HivePath)) -AND ($i -le 5)) {
[System.GC]::Collect()
Start-Process -PassThru -FilePath "REG.EXE" -ArgumentList "Unload $(Set-RegKey)" -Wait -WindowStyle Hidden
$i += 1
}
[System.GC]::Collect()
Remove-PSDrive -Name $(Set-Reg)
[System.GC]::Collect()
}
Get-ChildItem (Split-Path $(Set-RegPath) -Parent) -Force | Where-Object {($_.psiscontainer -eq $false) -AND ($_.Name -like "ntuser*") -AND ($_.name -ne "ntuser.dat") -AND ($_.name -ne "ntuser.ini") -AND ($_.Name -ne "ntuser.pol")} | Remove-Item -Force
Get-PSDrive -PSProvider Registry | Where-Object {$_} | Select-Object -ExpandProperty Name | ForEach-Object {Start-Process -FilePath "REG.EXE" -ArgumentList "Unload $_" -Wait -WindowStyle Hidden; Remove-PSDrive -Name $_}
[System.GC]::Collect()
Beispiel einer Reg.ps1, welche ich mittels
. "$Project\Registry\$($_.Name)"
Function Set-Reg {
"HKLM"
}
Function Set-RegKey {
"HKLM\OFFLINE"
}
Function Set-RegRoot {
"HKEY_LOCAL_MACHINE"
}
Function Set-RegPath {
"$Project\Mount\Windows\System32\Config\SOFTWARE"
}
Function Set-HivePath {
"HKLM:\OFFLINE\Policies\Microsoft\Windows\Windows Search"
}
Function New-Hive {
New-Item -Path $(Set-HivePath)
}
Function Set-Hive {
Set-ItemProperty -Path $(Set-HivePath) -Name ConnectedSearchUseWeb -Value 0 -PassThru -Force
}
Gruß
Markus2016
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 391744
Url: https://administrator.de/contentid/391744
Ausgedruckt am: 24.11.2024 um 08:11 Uhr
4 Kommentare
Neuester Kommentar
Hallo Markus,
Ich mache das beim Bearbeiten eines Installationsmediums einfach so:
LG Martin
Ich mache das beim Bearbeiten eines Installationsmediums einfach so:
reg load HKEY_LOCAL_MACHINE\WIM $Mountpoint\Users\Default\ntuser.dat
reg add HKEY_LOCAL_MACHINE\WIM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer /v DisableEdgeDesktopShortcutCreation /t REG_DWORD /d "1" /f
reg unload HKEY_LOCAL_MACHINE\WIM
LG Martin