2012-07-01 14 views
7

मैं ऐसे उपकरण पर काम कर रहा हूं जिसके लिए वर्तमान उपयोगकर्ता का वॉलपेपर पथ प्राप्त करने की आवश्यकता है।विंडोज 8 में वॉलपेपर रजिस्ट्री कुंजी कहां है?

विंडोज 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

जो भी वॉलपेपर है कि वर्तमान में सेट है नहीं है।

क्या कोई अन्य कुंजी है जिस पर मैं भरोसा कर सकता हूं?

+1

कहाँ सी # और .NET प्रोग्रामिंग इस सवाल का हिस्सा है? –

+1

तो हाँ, एक खराब प्रस्तुत प्रश्न, लेकिन इसे बंद कर रहा है? वास्तव में? प्रश्न को भलाई के लिए संपादित करना एक कम * आलसी * संयम के लिए दृष्टिकोण है। – spender

+1

@ स्पेंडर: प्रश्न खराब रूप से प्रस्तुत नहीं किया गया है। यह विषय बंद है। आईएमओ http://superuser.com पूछने के लिए एक बेहतर जगह है। –

उत्तर

6

जिस कुंजी का आप उल्लेख कर रहे हैं वह सही नहीं है। मुझे लगता है कि आपने इंटरनेट एक्सप्लोरर से अपनी डेस्कटॉप पृष्ठभूमि के रूप में एक छवि रखी है, और उस कुंजी को पंजीकृत करने के लिए खोला गया था।

डेस्कटॉप पृष्ठभूमि स्थान प्राप्त करने के लिए सही कुंजी है:पर पुष्टि: एक्सपी, सीई, विस्टा, 7, 8

HKEY_CURRENT_USER\Control Panel\Desktop\Wallpaper 

विवरण:

  • मुख्य कुंजी : HKEY_CURRENT_USER
  • उप कुंजी: नियंत्रण कक्ष \ डेस्कटॉप
  • मान का नाम: वॉलपेपर
  • मूल्य के प्रकार: 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 
    
+0

धन्यवाद, उस कुंजी में विंडोज 8 पर सही वॉलपेपर पथ है। यह अजीब बात है कि यह विंडोज 7 पर नहीं है, भले ही मैं किसी भी ब्राउज़र के माध्यम से वॉलपेपर सेट नहीं कर रहा हूं। –

+0

उन तीन शैलियों के अलावा, फिट और फिल भी है, जिसमें फिटट वॉलपेपरस्टाइल = 6 है, और वॉलपेपर स्टाइल = 10 भरें, दोनों के लिए टाइलवैलपेपर = 0 के साथ। कम से कम, मैंने विंडोज 7 पर अनुभव किया है। – AkselK

+1

यह अब और काम नहीं करता है। अब यह ट्रांसकोडेड वालपेपर – thenonhacker

11

आप दूर बेहतर डेस्कटॉप वॉलपेपर स्थापित करने के लिए विकल्प के साथ SPI_SETDESKWALLPAPER SystemParametersInfo बुला रहे हैं। जहां तक ​​मैं कह सकता हूं, आप जिस रजिस्ट्री कुंजी का उपयोग कर रहे हैं वह अनियंत्रित है और इस प्रकार चेतावनी के बिना किसी भी समय बदल सकता है।

SP12_SETDESKWALLPAPER के साथ SystemParametersInfo को कॉल करने के उदाहरण के उदाहरण के लिए this स्टैक ओवरफ़्लो प्रश्न देखें।

+0

के तहत बाइनरी के रूप में संग्रहीत है और ओपी ने उस मामले के लिए सी ++ या किसी अन्य भाषा का उल्लेख किया था? – Zuul

+1

डेस्कटॉप वॉलपेपर सेट करने के लिए एक दस्तावेज तंत्र है। रजिस्ट्री कुंजियां बदलना (जहां तक ​​मुझे पता है) 100% अनियंत्रित है, और इस प्रकार बिना किसी सूचना के बदला जा सकता है। –

+0

यह नहीं कह रहा कि एक और प्रोग्रामेटिक विधि उचित नहीं होगी, लेकिन [एमएसडीएन] (http://msdn.microsoft.com/en-US/) पर एक साधारण खोज [डेस्कटॉप रजिस्ट्री सेटिंग्स] के लिए कुंजी दिखाती है (http://msdn.microsoft.com/en-us/library/aa452934.aspx) दस्तावेज। यह भी माइक्रोसॉफ्ट समर्थन [आलेख आईडी: 329677] (http://support.microsoft.com/kb/329677)। – Zuul

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')); 
     } 
    } 
} 
0

रजिस्ट्री निश्चित रूप से एक अच्छा विकल्प नहीं है। मैं अपने डेस्कटॉप के लिए छवियों का एक संग्रह shuffle।

Windows 8 RTM 
KEY: HKEY_CURRENT_USER\Control Panel\Desktop 
VALUE: C:\Users\Thomas\AppData\Roaming\Microsoft\Windows\Themes\TranscodedWallpaper 

कोड पथ SystemParametersInfo रिटर्न एक ही मूल्य का उपयोग कर पुन: प्राप्त करने के लिए दिया।

0

यह ट्रांसकोडेड इमेज कैश (REG_BINARY) नामक मान में संग्रहीत है। यहां एक वीबीस्क्रिप्ट है जो सादे पाठ को पढ़ता/परिवर्तित करता है और मूल्य को आउटपुट करता है।

How to Determine the Current Wallpaper File Name and Path in Windows 8 - The Winhelponline Blog

संबंधित मुद्दे