0
我想用C#更改目錄(文件夾)圖標,使用C#編程
我想用C#更改目錄(文件夾)圖標,使用C#編程
改變的特定文件夾的Windows平臺上的圖標圖標您可以通過在desktop.ini
文件
private static void ApplyFolderIcon(string targetFolderPath, string iconFilePath)
{
var iniPath = Path.Combine(targetFolderPath, "desktop.ini");
if (File.Exists(iniPath))
{
//remove hidden and system attributes to make ini file writable
File.SetAttributes(
iniPath,
File.GetAttributes(iniPath) &
~(FileAttributes.Hidden | FileAttributes.System));
}
//create new ini file with the required contents
var iniContents = new StringBuilder()
.AppendLine("[.ShellClassInfo]")
.AppendLine($"IconResource={iconFilePath},0")
.AppendLine($"IconFile={iconFilePath}")
.AppendLine("IconIndex=0")
.ToString();
File.WriteAllText(iniPath, iniContents);
//hide the ini file and set it as system
File.SetAttributes(
iniPath,
File.GetAttributes(iniPath) | FileAttributes.Hidden | FileAttributes.System);
//set the folder as system
File.SetAttributes(
targetFolderPath,
File.GetAttributes(targetFolderPath) | FileAttributes.System);
}
指定它更新的文件夾圖標如果您現在右鍵單擊該文件夾,您將看到該圖標已更新。在文件資源管理器中應用更改可能還需要一段時間。
我一直在試圖找到一種方法來立即應用更改,但目前爲止沒有運氣。有一個SHChangeNotify
shell函數應該這樣做,但它似乎不適用於文件夾。
注意我們必須從ini
文件在開始刪除System
和Hidden
屬性,否則File.WriteAllText
將失敗,因爲你沒有權限對其進行修改。
感謝您使用最簡單的代碼。 +1 –
@Prajwal:不幸的是,重複問題的答案很差。 –
現有的問題是好的,但他們的問題忘記刪除*'desktop.ini' *文件特別是*文件夾*之前更改圖標它真的很好地工作。 –