2010-01-23 41 views
17
  • Windows 7.
  • Nó dành cho máy của riêng tôi, vì vậy không quan trọng nếu nó yêu cầu quyền quản trị hay gì đó.
  • Tốt nhất là bằng Python hoặc .NET, nhưng tôi có thể tìm hiểu một chút về lập trình Win32 (C/C++) nếu cần thiết.

Trả lời

20

nếu bạn muốn thiết lập vĩnh viễn biến môi trường, bạn có thể chèn các giá trị mới vào registry. ví dụ với VBScript, thêm đường dẫn "C: \ test" vào biến PATH

Set WshShell = WScript.CreateObject("WScript.Shell") 
strReg = "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment\Path" 
strSetting = WshShell.RegRead(strReg) 
strNewSetting = strSetting&";c\test" 
WshShell.RegWrite strReg, strNewSetting 

Vì vậy, nếu bạn sử dụng Python hoặc các ngôn ngữ khác, bạn có thể làm điều tương tự sử dụng của ngôn ngữ của bạn api riêng/modules để đọc và viết đăng ký

+1

Chỉ cần lưu nó dưới dạng .vbs và chạy nó. –

2

Sử dụng các lớp Môi trường như thế này:

Environment.SetEnvironmentVariable("foo", "bar"); 
+0

Tôi quên đề cập đến, đó là chỉ trong suốt thời gian của chương trình hay nó là vĩnh viễn? – Javier

+0

Nó sẽ chỉ ảnh hưởng đến môi trường chương trình hiện tại. Thay đổi hệ thống rộng trong sổ đăng ký (xem câu trả lời của ghostdog) và yêu cầu chương trình được khởi chạy lại sau khi thực hiện thay đổi. – Joshua

-3

Biến môi trường sửa đổi chương trình chỉ dành cho thời lượng của chương trình. Đã không nghe nói về thực sự sửa đổi môi trường toàn hệ thống và làm cho nó có hiệu quả ở đó và sau đó. Tôi không nghĩ rằng có thể được thực hiện, mà sẽ yêu cầu poking xung quanh ở cấp độ đặc quyền và có thể rối tung với hệ thống cốt lõi để đạt được điều đó.

Ngay cả dưới Unix, nó không thể được thực hiện mặc dù một số hacks để đạt được nó. Tôi nhớ nhìn thấy mã thực sự đã sửa đổi các biến môi trường trong MSDOS, bằng cách thay đổi cấu trúc dữ liệu môi trường _psp của MSDOS, nhưng đó là một hệ thống đơn nhiệm và 16bit không có sự bảo vệ nào.

Tóm lại, tôi không nghĩ bạn có thể và sẽ không khôn ngoan để làm như vậy, có thể được coi là hệ thống đang bị đe dọa bởi 'trojan' hoặc 'vi-rút' nếu cố gắng để làm như vậy, không đơn độc rằng, với tư cách là người dùng, tôi không muốn cho một chương trình sửa đổi biến môi trường hệ thống mà không có sự đồng ý của tôi! Chắc chắn, một chương trình có thể ghi vào sổ đăng ký để làm cho nó vĩnh viễn, nhưng tôi vẫn muốn biết mục đích của nó là gì và tại sao.

+1

Hãy xem [this] (http://msdn.microsoft.com/en-us/library/windows/desktop/ms682653 (v = vs.85) .aspx) cho một biến môi trường thiết lập phương thức dính. -1 cho FUD. – ssc

8

Trong C# sau đây tạo ra một biến môi trường vĩnh viễn:

Environment.SetEnvironmentVariable("foo", "bar", EnvironmentVariableTarget.Machine); 
+0

Điều này có trở thành vĩnh viễn không? – Javier

+1

Nó phụ thuộc vào giá trị của liệt kê EnvironmentVariableTarget được sử dụng. Xem http://msdn.microsoft.com/en-us/library/system.environmentvariabletarget.aspx – kicsit

+0

cửa sổ gỡ lỗi của tôi treo khi tôi thêm vào "EnvironmentVariableTarget.Machine" –

5

hoặc bạn có thể thử một kịch bản Windows PowerShell; PowerShell được cài đặt trên Windows 7 theo mặc định.

chạy powershell.exe

PS C:\> [Environment]::SetEnvironmentVariable("TestVariable", "Test value.", "User") 

Sau đó, ví dụ, từ cmd.exe

Microsoft Windows [Version 6.1.7601] 
Copyright (c) 2009 Microsoft Corporation. All rights reserved. 

C:\>echo %TestVariable% 
Test value. 

C:\> 

Hoặc (trong một mới) powershell.exe

PS C:\> echo $ENV:TestVariable 
Test Value. 
PS C:\> 

séc ra http://technet.microsoft.com/en-us/library/ff730964.aspx

+0

Tính năng này hoạt động như được mô tả, nhưng vỏ hệ điều hành DOS đã mở khi env var được thiết lập dường như không nhận được sự thay đổi, vì vậy rõ ràng, PowerShell không phát một thông điệp 'WM_SETTINGCHANGE' như được mô tả [ở đây] (http://msdn.microsoft.com/en-us/library/ windows/desktop/ms725497 (v = vs.85) .aspx). Tốt bắt đầu mặc dù. – ssc

4

F hoặc bất cứ ai khác tìm kiếm một câu trả lời commandline nhanh

SETX có sẵn trên cửa sổ máy chủ (natively tôi nghĩ rằng - http://technet.microsoft.com/en-us/library/cc755104.aspx)

của nó cũng có sẵn trong Windows 78 toolkit.

+1

+1 Simpler sau đó câu trả lời trước đó và hoạt động trên win7 cuối cùng quá – daitangio

+0

setx.exe không thể là một công cụ tồi tệ hơn để mở rộng 'Path'. Giá trị 'Đường dẫn' của người dùng và hệ thống sẽ không bao giờ bị xáo trộn và các biến phần trăm trong giá trị 'REG_EXPAND_SZ' phải được bỏ tạm thời. setx.exe không thể làm bất kỳ điều này. Những gì nó có thể làm là tạo ra một mớ hỗn độn khủng khiếp mà không thể hoàn tác được. – eryksun

+0

không đổ lỗi cho chúng tôi vì muốn sử dụng dòng lệnh được cung cấp bởi microsoft: Mô tả: Tạo hoặc sửa đổi các biến môi trường trong người dùng hoặc hệ thống môi trường. Có thể đặt biến dựa trên các đối số, regkey hoặc đầu vào tệp. – user1885834

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