2014-09-30 154 views
2

我是wix的新手,但我必須將其用於項目。我需要禁用用戶更改密碼的功能。要做到這一點,我想添加/修改註冊表項,但這不起作用:使用wix安裝程序創建註冊表項

<DirectoryRef Id="TARGETDIR"> 
    <Component Id="RegistryEntries" Guid="*"> 
     <RegistryKey Root="HKCU" 
        Key="Software\Microsoft\Windows\CurrentVersion\Policies\System"> 
      <RegistryValue Type="integer" Name="DisablePW" Value="1" KeyPath="yes"/> 
      <RegistryValue Type="string" Value="Default Value"/> 
     </RegistryKey> 
    </Component> 
</DirectoryRef> 

在政策沒有系統的關鍵又是那麼我以爲這將創建一個。

回答

0

永不忘記在功能標籤之間添加組件ID。如果不是,它將不會包含在安裝程序中。

<Feature Id="DefaultFeature" Level="1"> 
     <ComponentRef Id="RegistryEntries"/> 
</Feature> 

PS:恕我直言,在這裏在SO維克斯其他的答案應該只處理加入全新的註冊表值(不安裝之前存在),因爲在卸載它們將被刪除。如果您想修改或刪除註冊表項,請確保使用自定義操作(腳本,程序,批處理,.reg,...)將此更改回滾。

+0

** 1)**僅在** HKLM **中設置**只讀**註冊表項並適用於您的整個應用程序(典型示例:**許可證密鑰**,選定**安裝目錄** ,共享的**服務器名稱和端口設置**等)*或* ** 2)**將HKLM中的值設置爲應用程序在爲每個用戶啓動時複製到HKCU的模板值。使用MSI向HKCU寫入任何值。這是多年部署經驗的最佳建議。 – 2014-11-12 18:32:00

2

你不應該寫這樣一個關鍵和政策控制的Windows註冊表項。

我的猜測是域控制器將通過group policy恢復這些設置:「...默認的Microsoft Windows刷新每90分鐘一次的策略設置與隨機30分鐘偏移」。當然也可以在登錄腳本或其他管理功能中重置事物。

這不是一個解決方案 - 您的應用程序需要重新設計。爲什麼你需要禁用用戶改變密碼的能力?混淆這些設置是非常糟糕的做法。 Software\Microsoft\Windows\CurrentVersion\Policies\之下的任何內容都不應該混淆。

+0

那麼我不介意wix是否可以改變組策略。背景很簡單:這將是一個演示應用程序,它應該運行在另一方面將被隨機數量的人使用的測試機器上。所以我需要限制我所能做的一切。如果每個用戶都可以使用ctrl + alt + del並使用任務管理器,更改pw等以退出演示應用程序,會發生什麼?是的,基本上我的應用程序是一個大病毒。 – sceiler 2014-09-30 22:40:35

+0

這聽起來像你需要的是一個鎖定的機器設置。嘗試[** serverfault.com **](http://www.serverfault.com)獲取系統管理員幫助。他們可能會指向**默認腳本**,您可以運行該腳本來準備計算機以供演示使用。這必然會超過密碼更改,必須鎖定。 – 2014-09-30 22:45:26

+0

謝謝你的建議。不幸的是,這不起作用,因爲我自己受限於這樣做。無視我是否應該或不應該混淆組策略的註冊表;你可以用wix指出我的錯誤並在註冊表中添加/更改值嗎? – sceiler 2014-09-30 22:51:03

相關問題