2012-07-01 29 views
7

Tôi đang làm việc trên một công cụ cần có đường dẫn hình nền của người dùng hiện tại.Phím đăng ký hình nền trong Windows 8 ở đâu?

Trên Windows 7, tôi có thể nhận được rằng bằng cách đọc

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

Mở cài đặt Windows 8 của tôi, quan trọng mà luôn luôn có giá trị

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

mà không phải là ngay cả những nền hiện đang được thiết lập.

Có khóa nào khác mà tôi có thể dựa vào không?

+1

Phần C# và phần lập trình .NET của câu hỏi này ở đâu? –

+1

Vì vậy, yeah, một câu hỏi được trình bày kém, nhưng đóng nó? Có thật không? Chỉnh sửa câu hỏi thành sự tốt lành là cách tiếp cận ít * lười biếng hơn để kiểm duyệt. – spender

+1

@spender: Câu hỏi không được trình bày kém. Nó tắt chủ đề. IMO http://superuser.com là một nơi tốt hơn để hỏi. –

Trả lời

6

Chìa khóa bạn đang đề cập không chính xác. Âm thanh với tôi rằng bạn đã đặt một hình ảnh làm nền màn hình của mình từ Internet Explorer và khóa đó đã được mở để đăng ký nó.

Chìa khóa đúng để có được vị trí nền máy tính để bàn là:Xác nhận trên: XP, CE, Vista, 7, 8

HKEY_CURRENT_USER\Control Panel\Desktop\Wallpaper 

chi tiết:

  • chìa khóa chính : HKEY_CURRENT_USER
  • Phím phụ: Bảng điều khiển \ Desktop
  • Tên 0
  • Value: Hình nền
  • Value type: REG_SZ
  • dữ liệu
  • Value: đường dẫn đầy đủ cho hình ảnh được sử dụng làm hình nền desktop

Ngoài ra, dưới HKEY_CURRENT_USER\Control Panel\Desktop\ bạn sẽ tìm thấy hình nền khác các tùy chọn liên quan để áp dụng các kiểu khác nhau: Trung tâm, Ngói và Căng.

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

Để áp dụng các phong cách sử dụng hướng dẫn sau đây:

  1. Center

    WallpaperStyle = 0 
    TileWallpaper = 0 
    
  2. Ngói

    WallpaperStyle = 0 
    TileWallpaper = 1 
    
  3. Stretch

    WallpaperStyle = 2 
    TileWallpaper = 0 
    
+0

Cảm ơn, phím đó giữ đường dẫn hình nền chính xác trên Windows 8. Thật lạ khi nó không có trên Windows 7, mặc dù tôi không cài đặt hình nền thông qua bất kỳ trình duyệt nào. –

+0

Ngoài ba kiểu đó, cũng có Fit và Fill, với Fit có WallpaperStyle = 6 và Fill có WallpaperStyle = 10, với TileWallpaper = 0 cho cả hai. Ít nhất, đó là những gì tôi đã trải nghiệm trên Windows 7. – AkselK

+1

Điều này không hoạt động nữa. Nó bây giờ được lưu trữ như nhị phân dưới TranscodedWallpaper – thenonhacker

11

Bạn đang FAR khấm khá hơn gọi SystemParametersInfo với các tùy chọn SPI_SETDESKWALLPAPER để thiết lập hình nền desktop. Theo như tôi có thể nói, khóa registry bạn đang sử dụng là không có giấy tờ và do đó có thể thay đổi bất cứ lúc nào mà không cần cảnh báo.

Xem this câu hỏi tràn ngăn xếp để biết ví dụ về cách gọi SystemParametersInfo với SPI_SETDESKWALLPAPER.

+0

Và chỉ cần nơi OP đã đề cập C + + hoặc bất kỳ ngôn ngữ khác cho rằng vấn đề? – Zuul

+1

Có một cơ chế được ghi lại để đặt hình nền cho máy tính. Thay đổi khóa registry là (theo như tôi biết) 100% không có giấy tờ, và do đó có thể thay đổi mà không cần thông báo. –

+0

Không nói rằng một phương pháp lập trình nhiều hơn sẽ không phải là một phương pháp thích hợp, nhưng một tìm kiếm đơn giản tại [MSDN] (http://msdn.microsoft.com/en-US/) hiển thị khóa cho [Desktop Registry Settings] (http://msdn.microsoft.com/en-us/library/aa452934.aspx) được ghi lại. Ngoài ra hỗ trợ của Microsoft này [Điều ID: 329677] (http://support.microsoft.com/kb/329677). – Zuul

10

Dựa nhiều vào mã có sẵn tại pinvoke.net, cách chính xác để truy xuất hình nền máy tính để bàn hiện tại của người dùng là sử dụng hàm SystemParametersInfo. Mẫu làm việc này như sau:

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

Sổ đăng ký chắc chắn không phải là một lựa chọn tốt. Tôi trộn một bộ sưu tập hình ảnh cho máy tính để bàn của tôi.

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

Mã được cung cấp để truy xuất đường dẫn sử dụng SystemParametersInfo trả về cùng giá trị.

Các vấn đề liên quan