2016-10-24 12 views
1

レジストリ値を書き込むときに、グループ名の代わりにSIDを使用する方法はありますか?例えば。現在、私は持っています:グループ名の代わりにSIDを使用してレジストリに書き込む

「ユーザー」名が翻訳されているため、通常は動作しますが英語以外の言語では失敗します。私は、SIDをする権限要素を変更した場合、それは(IMO)動作するはずですが、それはしません:

<Component Id="RegistryEntries" Guid="{------sanitized------}"> 
    <RegistryKey Root="HKLM" Key="------sanitized------" ForceCreateOnInstall="yes"> 
     <Permission User="S-1-5-32-545" GenericRead="yes" Read="yes" GenericWrite="yes" /> 
     <RegistryValue Name="ServerName" Action="write" Type="string" Value="" KeyPath="yes"> 
      <Permission User="S-1-5-32-545" GenericRead="yes" Read="yes" GenericWrite="yes" /> 
     </RegistryValue> 
    </RegistryKey> 
</Component> 

は、代わりにそれは文字通り「S-1-5-32-545」と呼ばれるグループを検索しようとします。私がここでやろうとしていることをする方法はありますか?私は他の非wixインストーラがこれを行うことができることを知っていますが、そのような事に関するwixドキュメントの情報はありません。

+0

悲しいことに、 Windowsのそれ以降のバージョンではこれが可能ですが、最近アップグレードするリソースはありませんでした。 – LysolPionex

答えて

0

私は非常によく似た問題を抱えていたし、それを解決することができます:

  • 代わり <Permission>を使用してのウィックスUtilの拡張から<PermissionEx>を使用します。
  • 組み込みカスタムアクション WixQueryOsWellKnownSIDを使用して、ユーザーグループのローカライズされた名前を取得します。

まず、プロジェクトにWixUtilExtension参照を追加する必要があります。 その後、あなたはWXSソースファイルにWixUtilの名前空間を追加する必要があります。だから今は、ウィックスUtilの拡張からPermissionEx要素を使用することができます

xmlns:util="http://schemas.microsoft.com/wix/UtilExtension" 

<util:PermissionEx User="[WIX_ACCOUNT_USERS]" GenericAll="yes" /> 

をプロパティWIX_ACCOUNT_USERSが使用できるようにするには<Product>にプロパティ参照を追加して、組み込みカスタムアクションWixQueryOsWellKnownSIDを(暗黙的に)呼び出す必要があります。

<PropertyRef Id="WIX_ACCOUNT_USERS" /> 

Windows 10(英語とドイツ語)のWix 3.10を使用して私のために動作します

+0

ありがとう、私はこれを行くつもりです! – LysolPionex

+0

それはそれを解決する! ウィックスはここにいくつかのドキュメントを持っている:私たちは私たちの使用は.csファイルでの将来のコーダーのためにhttp://wixtoolset.org/documentation/manual/v3/customactions/osinfo.html を、: 'セキュリティ識別子SID =新しいですSecurityIdentifier(sidType、null); ' – LysolPionex

関連する問題