gpt4 book ai didi

windows - 使用 PowerShell 为自定义文件夹图标创建 desktop.ini 在 Windows 10 上不起作用

转载 作者:可可西里 更新时间:2023-11-01 10:33:11 25 4
gpt4 key购买 nike

我想在文件夹中创建 desktop.ini 文件,这些文件引用子文件夹中的 .jpg 以便为父文件夹提供自定义图像。这可以手动执行该过程(右键单击文件夹 > 属性 > 自定义 > 选择文件)。

假设文件夹结构如下:

C:\Test
---> Folder1
---> Fullsize
---> image.jpg
---> Folder2
---> Fullsize
---> image.jpg

在手动处理之前,父文件夹 ('Folder1') 具有以下属性:'Directory'

经过手动处理后,该文件夹的属性为'ReadOnly, Directory'。 'Fullsize' 子文件夹保留了 'Directory' 的原始属性。

创建的 desktop.ini 文件内容如下:

[ViewState]
Mode=
Vid=
FolderType=Generic
Logo=C:\Test\Folder1\Fullsize\image.jpg

此外,编码为 UTF-8,文件属性设置为 HSA('Hidden, System, Archive')。

单击“确定”后,文件夹会立即显示图像预览。

将其转换为另一个文件夹的等效代码,我们有:

$folder2 = 'C:\Test\Folder2'
$folder2Image = "$folder2\Fullsize\image.jpg"

$ini = @"
[ViewState]
Mode=
Vid=
FolderType=Generic
Logo=$Folder2Image
"@

Set-ItemProperty $Folder2 -Name Attributes -Value 'ReadOnly'

# Out-File creates UTF-8 with BOM so use [System.IO.File]
[System.IO.File]::WriteAllLines("$Folder2\desktop.ini", $ini)
$inifile = Get-Item "$Folder2\desktop.ini"
$inifile.Attributes = 'Archive, System, Hidden'

尽管如此,folder2 不会显示图像预览。

Folder view

检查 Folder1 和 Folder2 的属性(Get-Item $path | Select Attributes),以及 desktop.ini 文件显示它们是相同的。

desktop.ini 的编码和实际内容是相同的,除了图像的路径。图片路径正确。文件在每行末尾包含 CRLF。我什至确保图像的路径大小写正确(这无关紧要)。

彻底被难住了。手动过程还有什么我遗漏的?

desktop.ini files in Notepad++

Windows 10:版本 1607(操作系统内部版本 14986.1001)

最佳答案

必须使用 Shell API 方法更新 Desktop.ini,以便通知 Shell/Explorer:

function Set-FolderImage($folder, $imagePath) {
# make a temporary folder with desktop.ini
$tmpDir = (Join-Path $env:TEMP ([IO.Path]::GetRandomFileName()))
mkdir $tmpDir -force >$null
$tmp = "$tmpDir\desktop.ini"
@"
[ViewState]
FolderType=Generic
Logo=$imagePath
"@ >$tmp
(Get-Item -LiteralPath $tmp).Attributes = 'Archive, System, Hidden'

# use a Shell method to move that file into the destination
$shell = New-Object -com Shell.Application
$shell.NameSpace($folder).MoveHere($tmp, 0x0004 + 0x0010 + 0x0400)

# FOF_SILENT 0x0004 don't display progress UI
# FOF_NOCONFIRMATION 0x0010 don't display confirmation UI, assume "yes"
# FOF_NOERRORUI 0x0400 don't put up error UI

del -LiteralPath $tmpDir -force
}

用法:

Set-FolderImage 'R:\Temp' 'R:\33983.jpg'

关于windows - 使用 PowerShell 为自定义文件夹图标创建 desktop.ini 在 Windows 10 上不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42300649/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com