विंडोज 7 उपयोगकर्ता के रूप में HOMEDRIVE और HOMEPATH को ओवरराइड करना


49

मेरे नियोक्ता की एक सक्रिय निर्देशिका समूह नीति है जो मेरे विंडोज 7 लैपटॉप को "M:" (एक मैप्ड नेटवर्क ड्राइव) और मेरे HOMEPATH को "\" पर सेट करती है। चूंकि मेरे पास उस साझा ड्राइव की जड़ के लिए केवल-पढ़ने की अनुमति है, इसलिए मैं अपनी विंडोज़ होम डायरेक्टरी में फाइलें या निर्देशिका नहीं बना सकता। आईटी विभाग के साथ काम करने के मेरे प्रयास असफल रहे हैं।

क्या मेरे लिए इन एनवर्स को बूट या लॉगिन समय पर विश्व स्तर पर बदलने का कोई तरीका है ? मुझे सभी अनुप्रयोगों के लिए वैकल्पिक मूल्यों (जैसे "C:" और "\ Users \ myname") का उपयोग करने की आवश्यकता है। मेरे पास कुछ इंस्टॉल किए गए उपयोगिताओं (जैसे जीवीएम और अन्य) हैं जो उपयोगकर्ता के घर निर्देशिका में वरीयता फ़ाइलों को संग्रहीत करते हैं।

महत्वपूर्ण : "सिस्टम गुण> पर्यावरण चर" के तहत इन दूतों को बदलना काम नहीं करता है । मैंने इन दोनों को उपयोगकर्ता और सिस्टम चर (एक रिबूट सहित) के रूप में स्थापित करने की कोशिश की है। SET HOMEडॉस विंडो में टाइप करने से साफ पता चलता है कि मेरी सेटिंग्स को नजरअंदाज किया गया है। साथ ही, विंडोज शॉर्टकट में "स्टार्ट इन" का उपयोग करना भी इसे हल नहीं करेगा , क्योंकि मुझे सही ढंग से संचालित करने के लिए एक्सप्लोरर संदर्भ मेनू आइटम (जैसे "एडिट विम के साथ") जैसी चीजों की आवश्यकता है।

मेरे पास इस कंपनी के लैपटॉप पर व्यवस्थापक अधिकार हैं, लेकिन मैं एक Win7 गुरु नहीं हूं। दिन में वापस, एक बूट स्क्रिप्ट ने एक मिनट में इसे हल किया होगा। क्या यह आज भी संभव है? धन्यवाद।


2
आपके आईटी विभाग ने इन नीतियों को एक कारण के लिए निर्धारित किया है। यदि आपने इसे उनके साथ काम करने की कोशिश की है और उन्होंने इसे बदलने से इनकार कर दिया है तो शायद यह एक अच्छा कारण है। यदि आप उनकी सलाह को नजरअंदाज करना जारी रखते हैं और पकड़े जाने पर अनुशासनात्मक कार्रवाई की तैयारी करने के लिए कहते हैं।
जो टेलर

28
इस उद्योग में 30 से अधिक वर्षों के बाद, मैंने सीखा है कि औसत पीसी उपयोगकर्ता के लिए आईटी नीति अक्सर डेवलपर्स और बिजली उपयोगकर्ताओं के लिए अपर्याप्त (या यहां तक ​​कि अवरोधक) होती है। आईटी को अक्सर डेवलपर्स की जरूरतों को अलग तरीके से समायोजित करना पड़ता है, और अगर यह उनके लिए इस तरह का एक और सीखने का अनुभव है, तो मुझे मदद करने में खुशी होगी। मुझे उपयोगकर्ता की होम डाइरेक्टरी को बेकार बनाने के लिए एक वैध व्यावसायिक कारण सुनना अच्छा लगेगा।
MykennaC

2
समस्या का समाधान क्यों नहीं किया जाता है, यह दिखाएं कि यह कुछ उपयोगकर्ताओं के लिए असाध्य है और ऐसे उपयोगकर्ताओं के लिए एक अलग GPO प्रस्तावित करता है। इस रचनात्मक तरीके से आगे बढ़ने के लिए हैक के साथ डोमेन नीतियों को बायपास करने की कोशिश करने की तुलना में काम करने की अधिक संभावना है।
जो टेलर

6
आईटी आखिरकार मेरे पास वापस आ गया। वे कुछ भी बदलने नहीं जा रहे हैं। हां, आधिकारिक कंपनी नीति एक उपयोगकर्ता होम निर्देशिका प्रदान करने के लिए है जहां मुझे फाइलें बनाने की अनुमति नहीं है। वरीयता फ़ाइलों जैसी चीज़ों के लिए डिफ़ॉल्ट उपयोगकर्ता होम निर्देशिका का उपयोग करने का प्रयास करने वाले विंडोज एप्लिकेशन विफल हो जाएंगे। क्या यहाँ कोई जादूगर नहीं है जो मुझे इसके लिए कुछ समाधान प्रदान कर सके?
MykennaC

3
हाँ @ D0rf, उसे रोल करना चाहिए और बस इसे लेना चाहिए। यदि आईटी आपके काम को असंभव बना देता है, तो आपको लड़ने और उपद्रव उठाने की आवश्यकता है जब तक कि इसे बदल न दिया जाए। यदि आप एक निष्क्रिय डेवलपर हैं, तो आप अपने जीवन में एक भयानक कंपनी में बहुत योग्य हैं जो आपको आपके काम के लिए आवश्यक उपकरण नहीं देता है।
स्कॉट

जवाबों:


38

नीचे कुछ हैक्स विकसित किए गए हैं। वे सुरुचिपूर्ण नहीं हैं, लेकिन आपके कॉर्पोरेट वातावरण में कार्यात्मक हो सकते हैं।

केवल HOMEDRIVE

ऐसा लगता है कि कई एप्लिकेशन केवल HOMEDRIVE / HOMEPATH का उपयोग करते हैं। उस स्थिति में, आप एक स्टार्टअप स्क्रिप्ट बना सकते हैं, जो आपके स्थानीय उपयोगकर्ता पथ के आधार ड्राइव पत्र को UNC ड्राइव व्यवस्थापक पथ के माध्यम से हटाती है:

set HOME
HOMEDRIVE=G:
HOMEPATH=\
HOMESHARE=\\Server\Users\username

net use g: /delete
net use g: \\localhost\C$\Users\username

स्थानीय स्थानीय डिफ़ॉल्ट

यदि आपको नाम से "सर्वर" तक पहुंचने की आवश्यकता नहीं है, तो आप समूह नीति सेटिंग को विफल करने और अपने स्थानीय मशीन पर वापस गिरने का कारण बन सकते हैं। ऐसा करने का सबसे आसान तरीका है कि C: \ Windows \ System32 \ driver \ etc \ मेजबान जैसे एक प्रविष्टि जोड़ें :

127.0.0.1   Server

रिबूट करने के बाद, आपको कुछ इस तरह देखना चाहिए:

set HOME
HOMEDRIVE=C:
HOMEPATH=\Users\username

हाइब्रिड लोकल / रिमोट UNC पाथ के साथ HOMEDRIVE / SHARE

यदि आप कुछ UNC रास्तों के नाम से "सर्वर" तक पहुँच चाहते हैं, लेकिन स्थानीय पथों के साथ दूसरों को ओवरराइड करते हैं, तो मैंने निम्नलिखित घृणा को विकसित किया है। नोट: "सर्वर" के लिए प्रत्यक्ष सर्वर कनेक्शन अभी भी आपकी स्थानीय मशीन से हल होगा। मैं इस समाधान की सिफारिश केवल तभी करता हूं जब "सर्वर" केवल एक फ़ाइल सर्वर होता है:

  1. अपनी स्थानीय मशीन पर "सर्वर" को पुनर्निर्देशित करने के लिए C: \ Windows \ System32 \ driver \ etc \ Host को संशोधित करें :

    127.0.0.1   Server
    
  2. निम्न बहु स्ट्रिंग रजिस्ट्री मान HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Lsa \ MSV1_0 में जोड़ें जिससे कि स्थानीय UNC पथ में क्रेडेंशियल्स को पास किया जा सके:

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\MSV1_0\
    BackConnectionHostNames = Server
    
  3. एक डमी निर्देशिका बनाएं जो सर्वर की जड़ के रूप में काम करेगी:

    set DUMMY_LOC=C:\Server_Dummy
    
    mkdir %DUMMY_LOC%
    cd /D %DUMMY_LOC%
    
  4. प्रत्येक UNC पथ के लिए जिसे आप वास्तविक सर्वर पर निर्देशित करना चाहते हैं:

    rem Alternatively you can use an IP below, but it is more likely to break if DNS changes
    set SERVER_FQDN=Server.network.blah.com
    
    rem Take a look at what's available...
    net view \\%SERVER_FQDN%\
    
    mklink /D Remote_Example \\%SERVER_FQDN%\Remote_Example
    net share Remote_Example=%DUMMY_LOC%\Remote_Example /grant:everyone,FULL
    
  5. प्रत्येक यूएनसी शेयर के लिए आप स्थानीय रूप से परिभाषित करना चाहते हैं (जैसे उपयोगकर्ता):

    rem The link isn't really necessary for the share, I just find it easier to manage when all of these hacks are in the same directory
    
    mklink /D Users C:\Users
    net share Users=%DUMMY_LOC%\Users /grant:everyone,FULL
    
  6. रीबूट

उदाहरण के लिए, यह निम्नलिखित UNC रास्तों को हल करने की अनुमति देगा:

\\Server\Remote_Example => \\Server.network.blah.com\Remote_Example
\\Server\Users          => C:\Users

यह पथ संकल्प मैपिंग ड्राइव करने से पहले होना चाहिए। जब तक मैपिंग से जुड़े UNC पथ वैध होते हैं (वे स्थानीय या दूरस्थ होते हैं), ड्राइव अक्षर को अपेक्षित रूप से व्यवहार करना चाहिए।

उदाहरण के लिए, मेरे सेटअप में निम्नलिखित चर डोमेन द्वारा मजबूर हैं:

set HOME
HOMEDRIVE=G:
HOMEPATH=\
HOMESHARE=\\Server\Users\username

लेकिन मेरी नकल के कारण, परिणाम है:

G: => \\Server\Users\username => C:\Users\username

इन सुझावों से ऐसा लगता है कि वे आईएफ कमांड लाइन में काम कर रहे थे। एक ऐप (जैसे gvim) को प्रभावित करने के लिए मुझे संभवतः एक आवरण बनाने की आवश्यकता होगी। सभी प्रभावित एप्स पर इरिटेट करना बहुत काम की तरह लगता है, बदलते फ़ाइल एसोसिएशनों का उल्लेख नहीं करना, आदि। मेरे एम: रीमेक करना, बूट समय पर ड्राइव करना एक अच्छा सुझाव है, लेकिन विंडोज शुरू होने पर यह कैसे करना है (सभी को प्रभावित करने के लिए) क्षुधा / गोले)? मुझे उम्मीद है कि ये सुझाव दूसरों की मदद करेंगे, लेकिन मुझे नहीं लगता कि वे मेरे ओपी को हल करते हैं
MykennaC

3
मुझे कुछ समय में इन तरीकों की आवश्यकता नहीं थी, लेकिन मुझे याद है कि उन्हें विशेष रूप से gvim के लिए विकसित किया गया था, जो मुझे लगता है कि HOMEDRIVE और HOMEPATH का उपयोग कर रहा था। इन विधियों की आवश्यकता नहीं है कि आप कमांड लाइन से निष्पादित करते हैं; चर या ड्राइव पत्र का उपयोग करने वाले सभी अनुप्रयोग सभी प्रभावित होंगे। विधि # 2 और # 3 "स्थायी" हैं, और केवल परिवर्तनों को छड़ी करने के लिए एक बार निष्पादित करने की आवश्यकता है। मेथड # 1 को C: \ Users \ <You> \ AppData \ Roaming \ Microsoft \ Windows \ Start Menu \ Programs \ Startup में एक शॉर्टकट रखकर या टास्क शेड्यूलर में किसी कार्य को सेट करने पर स्वचालित रूप से निष्पादित किया जा सकता है। आशा है कि ये आपकी मदद करेगा!
टेरेंस

@terrance आह, अच्छी तरह से तैयार की जाती घृणा की सुंदरता। LMAO। यहाँ जानकारी के लिए धन्यवाद - और यहाँ TONS है ...
David I. McIntosh

3

सबसे अच्छा समाधान मैंने पाया कि लॉगिन के दौरान और पहले चर सेट करना था userinit.exe

यह जो मैंने किया है। पहले C:\Windows\System32\userinit.cmdयुक्त एक बैच फ़ाइल बनाई

@ECHO OFF
SET HOMEDRIVE=C:
SET HOMEPATH=\Users\%USERNAME%
SET HOMESHARE=\\localhost\C$\Users\%USERNAME%
@START C:\Windows\system32\userinit.exe

और उसके बाद का मान परिवर्तित HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Userinitकरने के लिए C:\Windows\System32\userinit.cmdरजिस्ट्री में।

अधिक जानकारी: https://technet.microsoft.com/en-us/library/cc939862.aspx


Win7 में काम किया है, लेकिन Win10 में नहीं।
चींटियों


0

मुझे लगता है कि ये रास्ते उस जगह पर स्वचालित रूप से सेट हो जाते हैं जहां आपका उपयोगकर्ता प्रोफ़ाइल है। जिस होम ड्राइव का आप जिक्र कर रहे हैं वह वह जगह है जहां आपका ntuser.dat और एप्लिकेशन डेटा और अन्य उपयोगकर्ता प्रोफ़ाइल फ़ोल्डर सही हैं? NT3.x के साथ वापस, "उपयोगकर्ता प्रोफ़ाइल" सेटिंग्स के साथ आपकी उपयोगकर्ता रजिस्ट्री हाइव थी और आप प्रत्येक उपयोगकर्ता के लिए एक अलग घर का रास्ता तय कर सकते थे। वे NT4 में एक डेस्कटॉप, मेरे दस्तावेज़, प्रारंभ मेनू, आदि के साथ उपयोगकर्ता प्रोफ़ाइल के रूप में एकजुट हो गए।

सभी प्रोफ़ाइल के स्थान के अंतर्गत रजिस्ट्री कुंजियों में संग्रहीत किया जाता है

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList

आपको विशेष प्रोफ़ाइल, और उपकुंजियों के लिए कुछ मान मिलेंगे: सिस्टम पर प्रत्येक सक्रिय प्रोफ़ाइल के लिए एक। वे उस उपयोगकर्ता खाते के SID द्वारा सेट किए जाते हैं जो वे संबंधित हैं। तुम्हारा खोजने का सबसे आसान तरीका सही मार्ग ( ProfileImagePathमूल्य के तहत ) की तलाश में हर एक के माध्यम से स्क्रॉल करना होगा । आपको उस मूल्य को बदलने में सक्षम होना चाहिए जो आप चाहते हैं; अगली बार जब आप लॉग ऑन करेंगे तो यह प्रभावी होगा। पहले अपनी फ़ाइलों को नए पथ पर कॉपी करना सुनिश्चित करें।

यदि आपको उस खाते से प्रोफ़ाइल को स्थानांतरित करना है जिसे आप लॉग इन किए हुए हैं (जैसे कि माइकसी के रूप में लॉग इन किया गया है और आप प्रोफ़ाइल को माइकसी के लिए कॉपी करने की कोशिश कर रहे हैं) ntuser.dat फ़ाइल (रजिस्ट्री हाइव युक्त HKEY_CURRENT_USER) कर्नेल द्वारा लॉक की जाएगी। आप अभी भी हाइव की प्रतिलिपि बना सकते हैं: regedit में जाएं, राइट क्लिक करें HKEY_CURRENT_USER, निर्यात का चयन करें, रजिस्ट्री हाइव फ़ाइलों के प्रकार बदलें , और अपने नए स्थान पर ntuser.dat के रूप में सहेजें।

मेरे अनुभव में अगर वाइनग्लोन को एक प्रोफ़ाइल लोड करने में समस्या है क्योंकि कुछ गलत सेट किया गया है, तो वह डिफ़ॉल्ट प्रोफ़ाइल से एक नई प्रतिलिपि बनाएगा या आपको उस सत्र के लिए उपयोग करने के लिए एक अस्थायी प्रतिलिपि देगा और आप अभी भी लॉग इन कर पाएंगे हालाँकि, मैं आपको सलाह दूंगा कि कुछ गलत होने पर आप सिस्टम पर उपयोग करने के लिए एक अलग व्यवस्थापक लॉगिन करें।


खैर, मेरे ProfileList में एकमात्र आइटम जो प्रासंगिक लगता है वह है ProfileImagePath, जो C: \ Users \ mppek के रूप में दिखाता है। यह मेल खाता है कि SER USERPROFILE मुझे क्या दिखाता है, लेकिन यहाँ मेरा ध्यान नहीं है। मुझे HOMEPATH और HOMEDRIVE को प्रभावित करना होगा। बस मज़े के लिए मैंने अपनी रजिस्ट्री को "M:" (पूरे स्ट्रिंग केवल = चेक से मिलान) पर सेट किए गए मान या डेटा के साथ आइटम के लिए खोजा और केवल एक कंप्यूटर / HKEY_USERS / xxxx / वाष्पशील पर्यावरण / HOMEDRIVE के साथ आया। इसे C में बदलना: मेरे वर्तमान लॉगिन सत्र में इसका कोई प्रभाव नहीं प्रतीत हुआ। रिबूट के बाद मान M पर वापस आ गया: (आश्चर्य नहीं)।
मायकेनक जूल

0

मैं इस मामले में पोस्ट कर रहा हूँ अगर कोई और इस सवाल को Google के माध्यम से आता है। अपने होम डायरेक्टरी को बदलने और आईएस के लोगों को मुझ पर पागल होने के बजाय, मैंने एक वर्चुअल मशीन पर अपना विकास चलाया। Microsoft विडो XP को वर्चुअल मोड में प्रदान करता है। http://www.microsoft.com/windows/virtual-pc/download.aspx


0

लॉगऑन, अनलॉक और शायद हर कुछ मिनटों में एक निर्धारित कार्य के रूप में नीचे दी गई स्क्रिप्ट (env-reset.vbs) को चलाने के लिए कुछ आसान विकल्प होगा।

Set shell = WScript.CreateObject("WScript.Shell")  
Set venv = shell.Environment("Volatile")  

scriptingHost = LCase(Right(Wscript.FullName,Len("cscript.exe")))
interactive = Wscript.Interactive And (scriptingHost = "cscript.exe")

If interactive Then 
  Wscript.Echo "WSCRIPT"
  Wscript.Echo "  ScriptingHost = " & scriptingHost
  Wscript.Echo "  FullName = " & Wscript.FullName
  Wscript.Echo "  ScriptFullName = " & Wscript.ScriptFullName
End If  

If interactive Then Call showVolatile()

homedrive = Left(venv("USERPROFILE"),2)
homepath = Mid(venv("USERPROFILE"),3)
If interactive Then 
  Wscript.Echo "COMPUTED"
  Wscript.Echo "  homedrive = " & homedrive
  Wscript.Echo "  homepath = " & homepath
End If  
venv("HOMEDRIVE") = homedrive
venv("HOMEPATH")  = homepath

If interactive Then Call showVolatile()

Wscript.Quit(0)

Sub showVolatile()
  Wscript.Echo "VOLATILE"
  Wscript.Echo "  USERPROFILE = " & venv("USERPROFILE")  
  Wscript.Echo "  HOMEDRIVE = " & venv("HOMEDRIVE")  
  Wscript.Echo "  HOMEPATH = " & venv("HOMEPATH")  
  Wscript.Echo "  HOMESHARE = " & venv("HOMESHARE")  
End Sub
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.