Windows 7 kullanıcısı olarak HOMEDRIVE ve HOMEPATH geçersiz kılma


49

İşverenim, Windows 7 dizüstü bilgisayarım HOMEDRIVE'ımı "M:" (eşlenmiş bir ağ sürücüsü) ve HOMEPATH'imi "\" olarak ayarlayan bir Active Directory grup politikasına sahip. Bu paylaşılan sürücünün kökü için salt okunur izinlerim olduğundan, windows home dizinimde dosya veya dizin oluşturamıyorum. BT departmanı ile çalışmak için girişimlerim başarısız oldu.

İçin bir yol var mı bana karşı küresel çizme veya giriş sırasında bu envars değiştirmek? Tüm uygulamaların alternatif değerleri kullanmasına ihtiyacım var ("C:" ve "\ Users \ myname" gibi). Tercih dosyalarını kullanıcının giriş dizininde saklayan bazı yüklü yardımcı programları (gvim ve diğerleri gibi) sahibim.

ÖNEMLİ : Bu envarları "Sistem Özellikleri> Çevre Değişkenleri" altında değiştirmek işe yaramaz . Bunları hem Kullanıcı hem de Sistem Değişkenleri (yeniden başlatma dahil) olarak ayarlamayı denedim. SET HOMEBir DOS penceresine yazmak , ayarlarımın göz ardı edildiğini açıkça gösteriyor. Ayrıca, "Başlat" seçeneğini kullanarak Windows kısayol da olacak değil Ben doğru çalışması için ( "Vim ile Edit" gibi) Explorer içerik menü öğeleri gibi şeyler ihtiyaç olarak, bunu çöz.

Bu şirketin dizüstü bilgisayarında yönetici haklarım var, ancak Win7 gurusu değilim. Günün sonunda, bir boot betiği bunu bir dakika içinde çözerdi. Bugün bile mümkün mü? Teşekkürler.


2
BT departmanınız bu politikaları bir sebepten dolayı belirlemiştir. Onlarla çalışmayı denediyseniz ve değiştirmeyi reddettilerse, muhtemelen iyi bir neden var. Eğer onların tavsiyelerini görmezden gelmeye devam edersen ve yakalanırsan disiplin cezası için hazırlanmasını istediklerine karşı çıkar.
Joe Taylor,

28
Bu sektörde 30 yıldan sonra, ortalama PC kullanıcısı için BT politikasının geliştiriciler ve uzman kullanıcılar için genellikle yetersiz (ve hatta engelleyici) olduğunu öğrendim. BT genellikle geliştiricilerin ihtiyaçlarını farklı bir şekilde karşılamak zorunda kalmıştır ve bu onlar için burada böyle bir öğrenme deneyimi varsa, o zaman yardım etmekten memnuniyet duyarım. Bir kullanıcının ev dizinini yönetilemez hale getirmek için geçerli bir iş nedeni duymak isterim.
MykennaC

2
Sorunun nedenini çözmeme sebebi, belirli kullanıcılar için çalışamaz olduğunu ve bu kullanıcılar için ayrı bir GPO önerdiğini gösteriyor. Bu yapıcı şekilde hareket etmek, etki alanı politikalarını kesmekle atlamaya çalışmaktan çok çalışmak için daha muhtemeldir.
Joe Taylor,

6
BT sonunda bana geri döndü. Hiçbir şeyi değiştirmeyecekler. Evet, resmi şirket politikası, dosya oluşturmamın yasak olduğu bir kullanıcı ana dizini sağlamaktır. Tercih dosyaları gibi şeyler için varsayılan kullanıcı giriş dizinini kullanmaya çalışan Windows uygulamaları başarısız olacaktır. Bu konuda bana geçici bir çözüm önerebilecek hiçbir sihirbaz yok mu?
MykennaC

3
yes @ D0rf, o yuvarlanmalı ve onu almalı. BT işinizi imkansız hale getirirse, değişinceye kadar mücadele etmeniz ve yaygara koparmanız gerekir. Pasif bir geliştirici iseniz, size işiniz için ihtiyacınız olan araçları vermeyen korkunç bir şirkette hayatınızı hak ediyorsunuz.
Scott,

Yanıtlar:


38

Aşağıda geliştirdiğim bazı hackler. Zarif değillerdir, ancak şirket ortamınızda işlevsel olabilirler.

Sadece ev sahibi

Birçok uygulamanın sadece HOMEDRIVE / HOMEPATH kullandığı görülüyor. Bu durumda, temel sürücü harfini UNC sürücü yönetici yolu üzerinden yerel kullanıcı yolunuza çeken bir başlangıç ​​komut dosyası oluşturabilirsiniz:

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

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

HOMEDRIVE Yerel Varsayılan

"Sunucu" 'ya ada göre erişmeniz gerekmiyorsa, grup ilkesi ayarının başarısız olmasına ve yerel makinenize geri dönmesine neden olabilirsiniz. Bunu yapmanın en kolay yolu, C: \ Windows \ System32 \ drivers \ etc \ hosts dosyasına bir giriş eklemektir :

127.0.0.1   Server

Yeniden başlattıktan sonra, şöyle bir şey görmelisiniz:

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

Hibrit Yerel / Uzak UNC Yolları ile ANASAYFA / PAYLAŞ

Bazı UNC yollarının adını "Sunucu" olarak erişmek istiyorsanız, ancak diğer yerel yollara sahip olanları geçersiz kılsanız, aşağıdaki uyuşmazlığı geliştirdim. Not: "Sunucu" ya doğrudan sunucu bağlantıları hala yerel makinenize çözülecektir. Bu çözümü yalnızca "Sunucu" yalnızca bir dosya sunucusuysa öneririm:

  1. Değiştir C: \ Windows \ System32 \ drivers \ etc \ hosts yerel makineye "Sunucu" yönlendirmek için:

    127.0.0.1   Server
    
  2. Kimlik bilgilerinin yerel UNC yoluna geçirilmesine izin vermek için HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Lsa \ MSV1_0 dizinine aşağıdaki Çok Dizeli kayıt defteri değerini ekleyin :

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\MSV1_0\
    BackConnectionHostNames = Server
    
  3. Sunucunun kökü olarak işlev görecek sahte bir dizin oluşturun:

    set DUMMY_LOC=C:\Server_Dummy
    
    mkdir %DUMMY_LOC%
    cd /D %DUMMY_LOC%
    
  4. Gerçek Sunucuya yönlendirmek istediğiniz her UNC yolu için:

    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. Yerel olarak tanımlamak istediğiniz her UNC paylaşımı için (Kullanıcılar gibi):

    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. Yeniden Başlatma

Örneğin, bu aşağıdaki UNC yollarının çözülmesine izin verecektir:

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

Bu yol çözünürlüğü, sürücü eşlemeleri öncesinde yapılmalıdır. Eşlemelerle ilişkilendirilen UNC yolları geçerli olduğu sürece (yerel veya uzak olabilirler), sürücü harfleri beklendiği gibi davranmalıdır.

Örneğin, kurulumumda aşağıdaki değişkenler etki alanı tarafından zorlanır:

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

Ancak haritalarım nedeniyle sonuç:

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

Bu öneriler komut satırında çalışıyor olsaydım yardımcı olacak gibi görünüyorlar. Bir uygulamayı etkilemek için (gvim gibi) muhtemelen bir sarmalayıcı oluşturmanız gerekir. Etkilenen tüm uygulamaları yinelemek, çok fazla iş gibi geliyor, değişen dosya ilişkilerini, vb. Bahsetmekten değil. M: sürücümü önyükleme sırasında yeniden başlatmak iyi bir öneri, ancak Windows başladığında bunu genel olarak nasıl yapmak apps / kabukları)? Umarım bu öneriler başkalarına yardımcı olur, ancak OP
MykennaC 'de

3
Bir süredir bu yöntemlere ihtiyacım olmadı, ama HOMEDRIVE ve HOMEPATH kullandığına inanıyorum, özellikle gvim için onları geliştirdiğimi hatırlıyorum. Bu yöntemler komut satırından çalıştırmanızı gerektirmez; değişkenleri veya sürücü harfini kullanan uygulamalar etkilenecektir. Yöntem # 2 ve # 3 "kalıcı" dır ve değişikliklerin yapışması için yalnızca bir kez çalıştırılması gerekir. Yöntem 1, başlangıçta C: \ Users \ <You> \ AppData \ Roaming \ Microsoft \ Windows \ Start Menu \ Programs \ Startup öğelerine kısayol yerleştirerek veya Görev Zamanlayıcı'da bir görev ayarlayarak otomatik olarak çalıştırılabilir. Umarım bu yardımcı olur!
Terrance

@terrance Ahhh, iyi işlenmiş abominasyonların güzelliği. LMAO. Buraya bilgi için teşekkürler - ve burada TONS var ...
David I. McIntosh

3

Bulduğum en iyi çözüm, giriş sırasında ve öncesinde değişkenleri ayarlamaktı userinit.exe.

Ben de öyle yaptım. İlk önce C:\Windows\System32\userinit.cmdiçeren bir toplu iş dosyası oluşturuldu

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

ve sonra değerini değiştirdi HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Userinitiçin C:\Windows\System32\userinit.cmdkayıt defterinde.

Daha fazla bilgi için: https://technet.microsoft.com/en-us/library/cc939862.aspx


Win7'de çalıştı, ancak Win10'da çalışmadı.
Karıncalar


0

Sanırım bu yollar otomatik olarak kullanıcı profilinizin bulunduğu yere ayarlanmış. Bahsettiğiniz ev sürücüsü ntuser.dat ve uygulama verilerinin ve diğer kullanıcı profili klasörlerinin doğru olduğu yer mi? NT3.x'e geri döndüğümüzde, "kullanıcı profili" yalnızca ayarlarınız olan kullanıcı kayıt defteri kovanızdı ve her kullanıcı için ayrı bir giriş yolu belirleyebilirsiniz. Bunlar NT4'te bir masaüstüyle, belgelerimle, başlat menüsümle birlikte bir kullanıcı profili olarak birleştirildi.

Tüm profillerin yerleri altındaki kayıt defteri anahtarlarında saklanır.

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

Özel profiller ve alt anahtarlar için bazı değerler bulacaksınız: sistemdeki her aktif profil için bir tane. Onlar ait oldukları kullanıcı hesabının SID'si tarafından kurulur. Kendinizinkini bulmanın en kolay yolu, doğru yolu arayan her biri arasında gezinmek olacaktır ( ProfileImagePathdeğerin altında ). Bu değeri sadece istediğiniz yolu değiştirebilmelisiniz; bir sonraki oturum açışınızda etkili olur. Dosyalarınızı önce yeni yola kopyaladığınızdan emin olun.

Profili giriş yapmış olduğunuz hesaptan taşımak zorundaysanız (örneğin, MikeC olarak giriş yapmış ve MikeC için profili kopyalamaya çalışıyorsanız) ntuser.dat dosyası (içeren kayıt defteri kovanı HKEY_CURRENT_USER) çekirdek tarafından kilitlenir. Kovanı hala kopyalayabilirsiniz: regedit'e gidin, sağ tıklayın, HKEY_CURRENT_USERdışa aktarın, türünü kayıt defteri kovanı dosyalarına değiştirin ve yeni konumunuzda ntuser.dat olarak kaydedin.

Tecrübelerime göre, winlogon bir şeyi yanlış ayarladığı için bir profil yüklerken sorun yaşarsa, ya varsayılan profilden yeni bir kopya oluşturur ya da o oturum için kullanmanız için geçici bir kopya verir. Ancak, bir şeyler ters giderse, sistemde kullanmak için farklı bir yönetici oturum açma bilgisine sahip olmanızı tavsiye ederim.


Evet, ProfileList'imde alakalı görünen tek madde C: \ Users \ mcepek olarak gösterilen ProfileImagePath. Bu, SET USERPROFILE'in bana gösterdiği şeylerle aynı, ancak buradaki odak noktam değil. HOMEPATH ve HOMEDRIVE'ı etkilemem gerekiyor. Sadece eğlence için, kayıt defterimi değerleri veya verileri "M:" olarak ayarlanmış öğeler için aradım (yalnızca tüm dizeyle eşle = işaretli) ve yalnızca Computer / HKEY_USERS / xxxx / Volatile Environment / HOMEDRIVE ile çıktı. Bunu C olarak değiştirmek: şu anki giriş oturumumda herhangi bir etkisi yoktu. Yeniden başlatmanın ardından, değer M'ye geri döndü: (sürpriz değil).
MykennaC


0

Biraz daha kolay bir alternatif, aşağıdaki betiği (env-reset.vbs) oturum açıldığında, kilidini açarak ve belki de birkaç dakikada bir zamanlanmış bir görev olarak çalıştırmak olacaktır.

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
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.