DOBON.NET DOBON.NETプログラミング掲示板過去ログ

Windows7でのImage.Saveエラーについて

環境/言語:[Windows7 VisualStudio2010(VB)]
分類:[.NET]

いつも参考にさせて頂いております。

 Form上にPictureBoxを作成し、そこで書いた画像をファイルに
 保存しようと「Image.Save」したところ、XPでは問題無く動作
 するのですがWin7では
  GDI+ で汎用エラーが発生しました。
 というエラーが発生してうまく動きません

 対策があると思いますが、まだ探し当てることが出来ていません。
 何かいい方法はないでしょうか?
 ちなみに管理者として実行すると希望通り動作してくれます。
 
  Dim grap As Graphics

PictureBox1.Image = New Bitmap(380, 380)
grap = Graphics.FromImage(PictureBox1.Image)
grap.DrawLine(New Pen(Color.Blue, 3), 11, 10, 20, 20)
grap.Dispose()
With PictureBox1
If Not (.Image Is Nothing) Then
.Image.Save("c:\test.png", Imaging.ImageFormat.Png)
→ ここでエラーになります
End If
If Not (.Image Is Nothing) Then
.Image.Dispose()
.Image = Nothing
End If
End With
■No28657に返信(NAOさんの記事)
>  ちなみに管理者として実行すると希望通り動作してくれます。
(略)
> .Image.Save("c:\test.png", Imaging.ImageFormat.Png)
> → ここでエラーになります

この 2 箇所からおおよそ原因がわかります。

Windows Vista 以降では通常、C:\ にファイルを置く権限がありません。
エクスプローラーでも C:\ にファイルを置こうとすると管理者権限が必要と出てくるように、通常はいたずらや不要な操作を予防するために、C:\ にファイルの作成ができなくなっています。

実験でファイルを作成したいのであれば、エクスプローラーで C:\temp というようなフォルダーでも作っておき、そこに保存するようにしてください。
■No28659に返信(Azuleanさんの記事)
> Windows Vista 以降では通常、C:\ にファイルを置く権限がありません。
> エクスプローラーでも C:\ にファイルを置こうとすると管理者権限が必要と出てくるように、通常はいたずらや不要な操作を予防するために、C:\ にファイルの作成ができなく
> なっています。

\Program Files 配下は制限があることを認識してしたが、ルート直下も同様なんですね。勉強になりました。汗顔の至りです
ありがとうございました。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板