質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Q&A

解決済

2回答

4864閲覧

フォルダのアイコンを変更したいです。

cancat

総合スコア313

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

0グッド

1クリップ

投稿2017/03/05 13:16

こんにちは。
Windows10でC#のアプリケーションを開発しています。
Visual Studio 2015 Communityを使っています。

###前提・実現したいこと
フォルダのアイコンを変更したいです。
C:\tmp\foldericonA.ico
C:\tmp\foldericonB.ico
C:\tmp\foldericonC.ico
があるとします。

プログラム上から、
Directory.CreateDirectory(@"C:\tmp\A");
Directory.CreateDirectory(@"C:\tmp\B");
Directory.CreateDirectory(@"C:\tmp\C");
としたとき、AフォルダのアイコンをfoldericonA.icoに、BをB.icoに、Cをc.icoにする、ということを、C#で書くことはできるのでしょうか?

###該当のソースコード

C#

1Directory.CreateDirectory(@"C:\tmp\A"); 2Directory.CreateDirectory(@"C:\tmp\B"); 3Directory.CreateDirectory(@"C:\tmp\C"); 4

###補足情報(言語/FW/ツール等のバージョンなど)
Microsoft Visual Studio Community 2015
Version 14.0.25424.00 Update 3
Microsoft .NET Framework
Version 4.6.01038

インストールしているバージョン:Community

Visual C# 2015 00322-20000-00000-AA575
Microsoft Visual C# 2015

です。
よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

変えたいフォルダの中に desktop.ini って名前のファイルを配置して IconResource を設定しておくとフォルダアイコン変えれます

(修正)
すみません、ミスしていました。
desktop.ini はフォルダじゃなくてファイルです。

投稿2017/03/05 13:31

編集2017/03/05 15:46
lazex

総合スコア604

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

cancat

2017/03/06 06:43

ありがとうございます。 string folder = @"C:\Users\username\Desktop\green"; Dicertory.CreateDirectory(folder); File.ApperdAllText(folder+@"\desktop.ini", "[.ShellClassInfo]\r\n"+ @"IconResource=C:\Users\username\Desktop\01.ico"+ "\r\n"+ @"IconFile=C:\Users\username\Desktop\01.ico"+ "\r\n"+ "IconIndex=0"+ "\r\n"); としてファイルは確認できたのですが、そのフォルダのアイコン、変わりませんねー。うーむ。
lazex

2017/03/06 10:55

別の方法で解決したようですが、少し試してみました。 GUIから変更した場合はすぐに変わりましたが、 desktop.ini をテキストファイルとして手動で編集する場合は書き換えてすぐやF5リロードでは更新されず explorer の再起動で適用されました。 explorer の再起動はフォルダを全部閉じてしまうなどの影響もあるので、YAmaGNZさんの方法のほうがよさそうです。
cancat

2017/03/06 15:08

コメントありがとうございます。 エクスプローラの再起動は必須と思っていたので、ウィンドウズの再起動はしてみたのですが、それでも変わらなかったのです。なぜでしょうね…。う~む。
guest

0

ベストアンサー

Windowsフォルダアイコンの変更
このような情報がありました。

・追記

リンク先のコードを試してみました。

C#

1 public class SetFolderIcon 2 { 3 [DllImport("kernel32.dll")] 4 private static extern bool WritePrivateProfileString( 5 string lpAppName, string lpKeyName 6 , string lpString, string lpFileName); 7 [DllImport("shlwapi.dll")] 8 private static extern bool PathMakeSystemFolder( 9 string folderName); 10 11 private SetFolderIcon() 12 { 13 } 14 15 public static void SetIcon(string targetFolder, string iconFilePath, int iconIndex) 16 { 17 string desktopIni = System.IO.Path.Combine(targetFolder, "Desktop.ini"); 18 WritePrivateProfileString(".ShellClassInfo", "IconFile", iconFilePath, desktopIni); 19 WritePrivateProfileString(".ShellClassInfo", "IconIndex", iconIndex.ToString(), desktopIni); 20 System.IO.FileInfo finfo = new System.IO.FileInfo(desktopIni); 21 finfo.Attributes |= System.IO.FileAttributes.Hidden; 22 PathMakeSystemFolder(targetFolder); 23 } 24 } 25

として

C#

1 SetFolderIcon.SetIcon(フォルダパス, アイコンファイル名, 0);

としたところアイコンは変更されました。

投稿2017/03/05 21:57

編集2017/03/06 06:58
YAmaGNZ

総合スコア10242

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

cancat

2017/03/06 07:09

変わりました。ありがとうございました。
cancat

2017/03/06 07:10

リンク先でコード見つけられなかったのです。助かりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問