內容資料存取 - 修復內容目錄的位置 - 應用程式

Microsoft.AppVirtualization.Server.45.LightWeightServer.ContentDataAccess_FixlocationoftheContentDirectory_Application (UnitMonitor)

「內容資料存取」節點會監控 Application Virtualization Streaming Server 的功能,以存取內容目錄 (可能是本機目錄或是透過網路分享),及讀取需要的檔案。內容目錄即為包含 .SFT 檔案之套件的所在位置。

Knowledge Base article:

摘要

「內容資料存取」節點會監控 Application Virtualization Streaming Server 的功能,以存取內容目錄 (可能是本機目錄或是透過網路分享),及讀取需要的檔案。內容目錄即為包含 .SFT 檔案之套件的所在位置。

解決方式

此錯誤碼的解決方式請見知識庫文章 931116 

症狀

當您開始
Application Virtualization Server 服務時,您會收到以下錯誤訊息:
  • Windows 無法在本機電腦上啟動 Application Virtualization Server。如果您需要更多資訊,請參閱系統事件日誌。如果這是非 Microsoft 的服務或服務廠商,請參閱服務特定的錯誤碼 41508。
此外,下列事件也會記錄在系統記錄檔:
  • 事件識別碼:7024 來源:服務控制管理員事件類別:錯誤說明:Application Virtualization Server 服務因服務定的錯誤 41508 而終止。
下列訊息也會記錄在 Application Virtualization Server 記錄檔 (Sft-server.log):
41508 "根路徑不正確:<path> "

原因

若以下任一情況為真,則會發生此問題:
  1. 內容目錄的路徑無效。
  2. Application Virtualization Server 登入帳戶針對內容目錄沒有適當的權限。

依預設,內容目錄的路徑如下:%ProgramFiles%\Microsoft

System Center App Virt Streaming Server\content

內容目錄的路徑設定於 Application Virtualization Server 的本機登錄中,以及 Application Virtualization 資料庫。當啟動 Application Virtualization Server 服務時,服務會嘗試連線至登錄中所設定的路徑。 如果 Application Virtualization Server 服務無法連線,服務會嘗試連線至 Application Virtualization 資料庫中設定的路徑。如果還是無法連線,服務就不會開始。
 
依照預設,Application Virtualization Server 登入帳戶為 NETWORK SERVICE 帳戶。Application Virtualization Server 登入帳戶需要內容目錄的「讀取」權限。如果內容目錄的路徑為「通用命名慣例」(UNC) 路徑,則 Application Virtualization Server 登入帳戶需要共用的「讀取」權限。如果 Application Virtualization Server 登入帳戶沒有適當的權限,服務不會啟動。

解決方式

若要解決此問題,請使用下列方法。

方法 1

確認內容目錄的路徑有效。若要這樣做,請依照下列步驟進行:
  1. 開始 [登錄編輯程式]。
  2. 找出下列登錄子機碼:HKEY_LOCAL_MACHINE\Software\Microsoft\SoftGrid\4.5\DistributionServer\PackageRoot
  3. 在 PackageRoot 按一下右鍵,然後按一下 [修改]。
  4. 注意內容目錄的路徑,然後按一下[取消]。
  5. 結束 [登錄編輯程式]。

方法 2

確定 Application Virtualization Server 登入帳戶有內容目錄的適當權限。若要這樣做,請依照下列步驟進行:

決定 Application Virtualization Server 登入帳戶。如果要這麼做,請遵循下列步驟:

  1. 在 [控制台],開啟 [系統管理工具],然後啟動 [服務]。
  2. 在 Application Virtualization Server 上按一下右鍵,然後按一下 [屬性]。
  3. 按一下 [登入] 索引標籤。
  4. 如果在 [登入為] 之下選取此帳戶,請注意 [此帳戶] 方塊 (預設為 NETWORK SERVICE) 中指定的帳戶。如果在 [登入為] 選取 [本機系統] 帳戶,則 Application Virtualization Server 登入帳戶為本機系統 (SYSTEM) 帳戶。注意:如果在 [登入為] 選擇了 Local System 帳戶,且內容目錄為 Application Virtualization Server 本機,則請在授權時使用 Local System (SYSTEM) 帳戶。如果內容目錄為 UNC 路徑,則授權時請使用 Application Virtualization Server 本機電腦帳戶。
  5. 結束服務。

如果內容目錄的路徑為 UNC 路徑,請確定 Application Virtualization Server 登入帳戶具備共用的「讀取」權限。若要這樣做,請依照下列步驟:

  1. 開始 Windows 檔案總管
  2. 尋找內容目錄
  3. 在 [共用] 按一下滑鼠右鍵,然後按一下 [屬性]。
  4. 按一下 [共用] 索引標籤。
  5. 確定您在步驟 1 決定的帳戶具備共用的讀取權限。如果帳戶沒有「讀取」權限,按一下 [使用權限],然後按一下選項以針對讀取權限選取 [允許] 核取方塊。
  6. 按一下 [確定],然後結束 Windows 檔案總管。

Element properties:

TargetMicrosoft.AppVirtualization.Server.45.LightWeightServer
Parent MonitorMicrosoft.AppVirtualization.Server.45.ContentDataAccess_LWS.HealthState
CategoryEventCollection
EnabledTrue
Alert GenerateTrue
Alert SeverityMatchMonitorHealth
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeMicrosoft.Windows.2SingleEventLogManualReset3StateMonitorType
RemotableTrue
AccessibilityPublic
Alert Message
內容資料存取 - 修復內容目錄的位置 - 應用程式
{0}
RunAsDefault

Source Code:

<UnitMonitor ID="Microsoft.AppVirtualization.Server.45.LightWeightServer.ContentDataAccess_FixlocationoftheContentDirectory_Application" Accessibility="Public" Target="Microsoft.AppVirtualization.Server.45.LightWeightServer" TypeID="Windows!Microsoft.Windows.2SingleEventLogManualReset3StateMonitorType" ParentMonitorID="Microsoft.AppVirtualization.Server.45.ContentDataAccess_LWS.HealthState">
<Category>EventCollection</Category>
<AlertSettings AlertMessage="Microsoft.AppVirtualization.Server.45.LightWeightServer.ContentDataAccess_FixlocationoftheContentDirectory_Application.Alert">
<AlertOnState>Warning</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>MatchMonitorHealth</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Data/Context/EventDescription$</AlertParameter1>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="Yellow" HealthState="Warning" MonitorTypeStateID="FirstEventRaised"/>
<OperationalState ID="Red" HealthState="Error" MonitorTypeStateID="SecondEventRaised"/>
<OperationalState ID="Green" HealthState="Success" MonitorTypeStateID="ManualResetEventRaised"/>
</OperationalStates>
<Configuration>
<FirstComputerName>$Target/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/PrincipalName$</FirstComputerName>
<FirstLogName>Application</FirstLogName>
<FirstExpression>
<And>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="String">PublisherName</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="String">Application Virtualization Server</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
<Expression>
<Or>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="UnsignedInteger">EventDisplayNumber</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="UnsignedInteger">41520</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="UnsignedInteger">EventDisplayNumber</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="UnsignedInteger">41561</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="UnsignedInteger">EventDisplayNumber</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="UnsignedInteger">41584</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="UnsignedInteger">EventDisplayNumber</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="UnsignedInteger">42001</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="UnsignedInteger">EventDisplayNumber</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="UnsignedInteger">42002</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
</Or>
</Expression>
</And>
</FirstExpression>
<SecondComputerName>$Target/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/PrincipalName$</SecondComputerName>
<SecondLogName>Application</SecondLogName>
<SecondExpression>
<And>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="String">PublisherName</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="String">Application Virtualization Server</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
<Expression>
<Or>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="UnsignedInteger">EventDisplayNumber</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="UnsignedInteger">41508</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="UnsignedInteger">EventDisplayNumber</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="UnsignedInteger">41523</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
</Or>
</Expression>
</And>
</SecondExpression>
</Configuration>
</UnitMonitor>