2010-12-19 5 views
6

私はcommonappdata(All Users)がシステム全体のアプリケーション設定を保持できることを知っていますが、Vista/7では非昇格ユーザーはそのディレクトリに書き込めません。昇格していないユーザーが書き込みアクセス権を持っているWindowsに共有フォルダがありますか?

ユーザー間で共有されているフォルダがあり、管理者以外のユーザーが書き込みできるフォルダはありますか?

私はこれがなぜ必要なのです: 私のアプリは、昇格した権利を持つInno SetupインストーラによってPFディレクトリにインストールされています。その後、管理者以外の実際のユーザーがプログラムを実行すると、昇格していない別のInno Setupインストーラを使用して、ユーザーのAppDataディレクトリにその設定をコピーします。プログラムの削除(管理者権限でシステム全体のインストーラによって開始されます)では、各ユーザーのAppDataディレクトリからプログラムのファイルをアンインストールします。

私は2つの解決策を考えることができます。 1. Windowsユーザーのリストを取得し、彼らののAppDataのdirsを反復処理(あまりにも複雑なようだ) 2.上記の一般的なユーザー・データ・ディレクトリを述べにおけるアンインストーラへのパスを格納します。

アイデア?

ありがとうございます!

答えて

0

解決策1は私にとってかなり妥当です。したがって、すべてのユーザーがインストールを制御し、セントラル共有インストールを制御します。

ソリューション2の場合は、インストーラがそれを知っているか、同じ目的でレジストリキーを使用するように、書き込み可能なフォルダを明確な場所に作成できます。しかし、誰かがアンインストールパスを改ざんする可能性があるので、セキュリティホールが発生する可能性があることに注意してください。他のユーザー

+0

しかし、解決策2を実現するにはどうすればよいですか? Windowsでは、userappdataディレクトリとは独立したパスはどこにありますか?通常の非昇格ユーザーには書き込みアクセス権がありますか? – Steve

+0

管理者権限で実行されるインストーラは、そのようなフォルダを作成することができます。そのためには十分な権限があります。おそらく、これは共通(管理者実行)のインストールフォルダのどこかにあるサブフォルダである必要があります。 – 9000

+0

実際にこれを行う方法をどこで説明するのか教えてください。私はこれを行っても、インストーラーはすべてのユーザーアカウントを順番に処理し、それぞれに許可を与える必要があるでしょうか? :-) – Steve

1

C:\ Users \ Public \の下にあるものは必要なものを取得できますか? Windows XPで

+1

これはVista以上でのみ利用できますか?私もXP用のソリューションが必要です! – Steve

+0

@スティーブ:XPにはマイコンピュータの共有ドキュメントフォルダがあり、完全なパスがわからないと思います。これは、マルチユーザーのローカルアクセスを目的としています。 –

4

"共有ドキュメント" ディレクトリ/ 7

C:\Users\Public 

またはVistaでディレクトリ対応

C:\Documents and Settings\All Users\Documents 

あるいは、

%ALLUSERSPROFILE%\Documents 

%PUBLIC%\Documents 

しかし、実際に探しているのは、の値がFOLDERID_PublicDocuments(従来のCSIDL_COMMON_DOCUMENTS)です。 SHGetFolderPath関数を使用すると、パスを取得できます。

それとも簡単にVBScriptの代替が、私は、これはOSのバージョン間でどのように信頼性がわからない:

Const CSIDL_COMMON_DOCUMENTS = &h2e 
Set oShell = CreateObject("Shell.Application") 
Wscript.Echo oShell.Namespace(CSIDL_COMMON_DOCUMENTS).Self.Path 

私はNameSpaceがその特定のconstantを受け入れていないと思います。したがって、COMMONAPPDATA = &H23を受け取り、その親を使用することができます。

Wscript.Echo oShell.NameSpace(&h23).ParentFolder.Self.Path & "\Documents" 

をしかし、あなたはInno Setupのを使用しているので、あなたは本当に{} commondocs Shell Folder Constantを使用して、自分のためにそれが簡単にする必要があります。しかし、それは非常にきれいや国際化ではありません。

1

ユーザーがドキュメントフォルダを所有しています。他のプログラムでコピー、移動、削除、または編集するファイルは、ユーザーに表示されるため、そこに何かを置いた場合は除きます。

インストーラの共通アプリケーションデータ(CSIDL_COMMON_APPDATAまたはFOLDERID_ProgramData)の下に、誰でもアクセスできるセキュリティ記述子を使用してフォルダを作成することをお勧めします。

など。

[Dirs] 
Name: "{commonappdata}\productname";Permissions:everyone-modify; 
関連する問題