2009-06-04 10 views
6

ユーザーが言語ウィンドウ(英語)としてインストールされているロケール(ドイツ語)を設定している場合、問題が発生します。どの言語のウィンドウがインストールされているのか、どのロケールがユーザーが設定しているのかを調べる方法はありますか? 問題は私が共有を作成していることに注意し、ロケールに基づいてパーミッションを設定します。ユーザーがロケールをドイツ語に設定している場合、「Everyone」のアクセス権は「Jeder」ですが、私はあなたがインストールされている言語パックを列挙可能性が想像「Jeder」のID言語ウィンドウがインストールされていることを確認してください

おかげ

+6

更新:参照するレジストリ値は... HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Nls \ Language \ InstallLanguage 4桁の言語コードを返します。 – Javamann

答えて

5

Windowsには、「UserLanguage」と「SystemLanguage」という概念があります。あなたが求めているのはSystemLanguageです。それを取得し、あなたは正しい答えを持っています。

更新:あなたがしたいWin32関数がGetSystemDefaultUILanguage(ある)

は、Windows上の 「インストール言語」として知られている オペレーティングシステムの システムのデフォルトのUI言語のための言語識別子を取得します。 Vista およびそれ以降。

http://msdn.microsoft.com/en-us/library/dd318123(VS.85).aspx

Windowsインストーラは、プロパティ "SystemLanguageId" を照会することができることに注意してください。 (インスタラーの観点から興味がある場合)

+0

私はSystemLanguageIdにアクセスできないInstallAnywhereを使用しています。代わりに、レジストリ参照呼び出しを行うことができます。 – Javamann

+0

正確には私が探していたものではありませんが、答えがどこにあるのかを指摘しました(40のGoogle検索後) – Javamann

+3

正しい答えは何でしたか? –

0

ないので失敗しますが、あなたがアクセス権を持っていない限り、インストール時に使用されたどのような言語取得できない可能性がありますインストールログ

0

なぜ「Everyone」または「Jeder」という単語に対してコーディングしていますか?あなたが確認できる変数はありませんか?

+0

これは確信しています。 – Javamann

2

質問のタイトルと質問自体は異なる問題です。あなたは "Everyone" SIDを作成しようとしていますが、あなたはロケールに依存した方法でそれについて考えています。あなたの問題に対する解決策は、ロケール依存の方法を使用しないことです。 CreateWellKnownSid APIを使用します。 CreateWellKnownSidのMSDNページには、Everyone SIDを作成するコードもあります。

+0

InstallAnywhereからの共有アクセス許可を設定しようとしていますが、オプションで制限されています。 Windows APIへのポインタをありがとう。 – Javamann

関連する問題