7

現在のユーザーの壁紙パスを取得する必要があるツールに取り組んでいます。

Windows 7では、読むことでそれを得ることができます

HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Desktop\General\WallpaperSource.

私のWindows 8インストールでは、そのキーには常に値があります

C:\Users\Peter\AppData\Roaming\Microsoft\Windows Photo Viewer\Windows Photo Viewer Wallpaper.jpg

現在設定されている壁紙でもありません。

他に信頼できるキーはありますか?

4

4 に答える 4

11

デスクトップの壁紙を設定するには、SPI_SETDESKWALLPAPER オプションを指定して SystemParametersInfo を呼び出す方がはるかに優れています。私が知る限り、あなたが使用しているレジストリ キーは文書化されていないため、警告なしにいつでも変更できます。

SPI_SETDESKWALLPAPER で SystemParametersInfo を呼び出す方法の例については、このスタック オーバーフローの質問を参照してください。

于 2012-07-01T15:10:29.680 に答える
10

pinvoke.netで入手可能なコードに大きく基づいており、現在のユーザーのデスクトップの壁紙を取得する正しい方法は、SystemParametersInfo関数を使用することです。これを行うサンプルは次のとおりです。

using System;
using System.Runtime.InteropServices;

namespace WallpaperPathRetrieval
{
    class Program
    {
        [DllImport("user32.dll", CharSet = CharSet.Auto)]
        private static extern Int32 SystemParametersInfo(UInt32 action, 
            UInt32 uParam, string vParam, UInt32 winIni);
        private static readonly UInt32 SPI_GETDESKWALLPAPER = 0x73;
        private static uint MAX_PATH = 260;

        static void Main(string[] args)
        {
            string wallpaper = new string('\0', (int)MAX_PATH);
            SystemParametersInfo(SPI_GETDESKWALLPAPER, MAX_PATH, wallpaper, 0);

            wallpaper = wallpaper.Substring(0, wallpaper.IndexOf('\0'));
        }
    }
}
于 2012-07-02T08:08:37.833 に答える
6

あなたが言及している鍵は正しいものではありません。Internet Explorerからデスクトップの背景として画像を配置し、そのキーを開いて登録したようです。

デスクトップの背景の場所を取得するための正しいキーは次のとおりです。 確認済み:XP、CE、Vista、7、8

HKEY_CURRENT_USER\Control Panel\Desktop\Wallpaper

詳細:

  • メインキー:HKEY_CURRENT_USER
  • サブキー:コントロールパネル\デスクトップ
  • 値の名前:WallPaper
  • 値のタイプ:REG_SZ
  • 値データ:デスクトップの背景として使用されている画像のフルパス

また、下HKEY_CURRENT_USER\Control Panel\Desktop\には、さまざまなスタイルを適用するための他の壁紙関連のオプションがあります:中央、タイル、およびストレッチ。

HKEY_CURRENT_USER\Control Panel\Desktop\WallpaperStyle
HKEY_CURRENT_USER\Control Panel\Desktop\TileWallpaper

スタイルを適用するには、次のガイドを使用してください。

  1. 中心

    WallpaperStyle = 0
    TileWallpaper = 0
    
  2. タイル

    WallpaperStyle = 0
    TileWallpaper = 1
    
  3. ストレッチ

    WallpaperStyle = 2
    TileWallpaper = 0
    
于 2012-07-01T01:14:55.653 に答える
0

これは、TranscodedImageCache (REG_BINARY) という名前の値に格納されます。これは、プレーン テキストを読み取り/変換して値を出力する VBScript です。

Windows 8 で現在の壁紙ファイルの名前とパスを確認する方法 - The Winhelponline ブログ

于 2013-10-25T06:53:55.707 に答える