Tôi cần thêm một mục mới vào biến PATH của mình. Đây là một hoạt động phổ biến đối với tôi trong công việc, nhưng gần đây tôi đã bắt đầu sử dụng Windows 8. Tôi cho rằng quy trình này sẽ tương tự như Windows 7, Vista, XP ...
Đây là chuỗi sự kiện của tôi:
- Thuộc tính hệ thống mở (Bắt đầu-> [loại "Bảng điều khiển"] -> Bảng điều khiển \ Hệ thống và bảo mật \ Hệ thống -> Cài đặt hệ thống nâng cao -> Biến môi trường)
- Thêm đường dẫn mới vào đầu biến USER PATH của tôi (C: \ dev \ Java \ apache-ant-1.8.4 \ bin;)
- Đã mở một dấu nhắc lệnh (Bắt đầu -> [gõ "dấu nhắc lệnh" enter] -> [loại "đường dẫn" enter]
Mục nhập đường dẫn mới của tôi không có sẵn (xem hình ảnh đính kèm và vide). Tôi đã sao chép chính xác quy trình tương tự trên máy Windows 7 và nó đã hoạt động.
CHỈNH SỬA
Windows 8 Biến môi trường và lệnh nhắc nhở video
CHỈNH SỬA
Đây chắc chắn không phải là hành vi của Windows 7. Xem video này để xem hành vi tôi mong đợi làm việc trong Windows 7. http://youtu.be/95JXY5X0fII
EDIT 5/31/2013
Vì vậy, sau nhiều thất vọng, tôi đã viết một ứng dụng C # nhỏ để kiểm tra WM_SETTINGCHANGE
sự kiện này. Mã này nhận được sự kiện trong cả Windows 7 và Windows 8. Tuy nhiên, trong Windows 8 trên hệ thống của tôi, tôi không nhận được đường dẫn chính xác; nhưng, tôi làm trong Windows 7. Điều này không thể được sao chép trong các hệ thống Windows 8 khác.
Đây là mã C #.
using System;
using Microsoft.Win32;
public sealed class App
{
static void Main()
{
SystemEvents.UserPreferenceChanging += new UserPreferenceChangingEventHandler(OnUserPreferenceChanging);
Console.WriteLine("Waiting for system events.");
Console.WriteLine("Press <Enter> to exit.");
Console.ReadLine();
}
static void OnUserPreferenceChanging(object sender, UserPreferenceChangingEventArgs e)
{
Console.WriteLine("The user preference is changing. Category={0}", e.Category);
Console.WriteLine("path={0}", System.Environment.GetEnvironmentVariable("PATH"));
}
}
OnUserPreferenceChanging
tương đương với WM_SETTINGCHANGE
Chương trình C # đang chạy trong Windows 7 (bạn có thể thấy sự kiện đi qua và nó chọn đúng đường dẫn).
Chương trình C # đang chạy trong Windows 8 (bạn có thể thấy sự kiện đi qua, nhưng đường dẫn sai).
Có một cái gì đó về môi trường của tôi đang kết thúc vấn đề này. Tuy nhiên, đây có phải là lỗi của Windows 8 không?
EDIT 2014-04-28
Do vấn đề này và một số vấn đề khác, chúng tôi không còn sử dụng Windows 8 trên máy tính để bàn. Chúng tôi không có môi trường để tiếp tục thử nghiệm và thử nghiệm vấn đề này. Vẫn chưa có câu trả lời hoặc giải quyết cho vấn đề này cho chúng tôi. Các câu trả lời dưới đây không giải quyết vấn đề của chúng tôi.
cmd
khi một phiên bản mới được khởi chạy. Tất nhiên, việc chạy cmd
đã không nhận được môi trường cập nhật.