トップ回答者
Windows 7 CreateFileで作ったファイルは鍵があるし、権限がないし、ファイルマッピングできない

質問
回答
-
User Account Control(UAC)でしたら、以下を参照し、
自分のApplicationが該当するか判断してください。
[User Account Control]
http://msdn.microsoft.com/en-us/library/aa511445.aspx
[Teach Your Apps To Play Nicely With Windows Vista User Account Control]
http://msdn.microsoft.com/en-us/magazine/cc163486.aspx
ちなみに、VC++ 6.0だと、Manifestを簡単に埋め込むことができません。
IDEをより新しいものに変更するなど、検討が必要になります。- 回答としてマーク 高橋 春樹 2010年3月1日 7:04
-
言葉の使い方の特徴から、中国か韓国籍の方ではないかと思います。中文やハングルといった、ご自分の言語で質問される方がよいのではないでしょうか。
まず、「アプリサービス」とは、なんでしょう?「Windows Service アプリケーション」ではないでしょうか。
そう仮定して、最大限好意的に解釈すると、質問内容は次のようになりますか。
VC++6.0 で、Windows Service アプリケーションを開発しました。このサービスの中で、CreateFile 関数にてファイルを生成し、他の Windows Form アプリケーションとファイル マップド メモリによる通信を行おうとしています。しかし、Windows 7 上で、サービスが作成したファイルには、Windows Explorer で見ると鍵のアイコンが追加で現れ、アプリケーションから開くことが出来ません。開こうとすると、ERROR_ACCESS_DENIED が出ます。XP では、この方法で出来ていました。Windows 7 にて、実現する方法を教えてください。
質問がこの通りだと仮定して、答えます。
Windows サービスは、デフォルトの設定では「ローカル システム アカウント」で起動します。そして、普通は、どの様なファイルも、ファイルを作ったアカウント(と同等以上の権限を持ったアカウント)にしか変更する権利を与えません。いわゆる「管理者」は、Windows Vista より、「管理者になることが出来るアカウント」に格下げされています。このため、ローカル システム アカウントにしか変更出来ないファイルを変更のために開くことが出来ません。
これを解決するには、マッピングに使うファイルを Public の下に作る、明示的に他のアカウントに対して書き込み権を与える、Windows アプリケーションを昇格して実行する、といった事を行います。
Jitta@わんくま同盟- 回答としてマーク 高橋 春樹 2010年3月1日 7:04
すべての返信
-
用語についてはWindowsで用いられる一般的な用語を使わないと内容を伝えるのによけいなやり取りが必要になってしまいます。
アクセス権限の有無の事を言っているのであれば、直接そう書いてください。
鍵が付けてあるという表現に特別な意味があるのであれば、それを説明してください。
アクセス権限が無いのであれば、Create出来ないのも、マッピングできないのも不思議では無いと思います。
きちんと権限がある状態でCreateすれば、マッピングもできるのではないかと思うのですけれど、
その方法が解らないと言う事なんでしょうか?
わからないと言う状況と教えてほしいと言う気持ちは伝わりますけれど、
それだけでは答えようが有りません。
掲示板は文字だけのやり取りになりますから御本人が書かれた内容だけが頼りになります。
自分の置かれた状況が目の前にいない事情を知らない人にも伝わるように頭の中でよく整理して
書くようにしてみてください。
掲示板では御本人が書いていない内容は相手には全く伝わらないと言う事をよく理解して説明をしてみてください。
解決した時は、参考になったレスポンスの所にある[回答としてマーク]ボタンをクリックしてスレッドを締めましょう。- 編集済み PATIO 2010年1月19日 5:17 追記
-
User Account Control(UAC)でしたら、以下を参照し、
自分のApplicationが該当するか判断してください。
[User Account Control]
http://msdn.microsoft.com/en-us/library/aa511445.aspx
[Teach Your Apps To Play Nicely With Windows Vista User Account Control]
http://msdn.microsoft.com/en-us/magazine/cc163486.aspx
ちなみに、VC++ 6.0だと、Manifestを簡単に埋め込むことができません。
IDEをより新しいものに変更するなど、検討が必要になります。- 回答としてマーク 高橋 春樹 2010年3月1日 7:04
-
言葉の使い方の特徴から、中国か韓国籍の方ではないかと思います。中文やハングルといった、ご自分の言語で質問される方がよいのではないでしょうか。
まず、「アプリサービス」とは、なんでしょう?「Windows Service アプリケーション」ではないでしょうか。
そう仮定して、最大限好意的に解釈すると、質問内容は次のようになりますか。
VC++6.0 で、Windows Service アプリケーションを開発しました。このサービスの中で、CreateFile 関数にてファイルを生成し、他の Windows Form アプリケーションとファイル マップド メモリによる通信を行おうとしています。しかし、Windows 7 上で、サービスが作成したファイルには、Windows Explorer で見ると鍵のアイコンが追加で現れ、アプリケーションから開くことが出来ません。開こうとすると、ERROR_ACCESS_DENIED が出ます。XP では、この方法で出来ていました。Windows 7 にて、実現する方法を教えてください。
質問がこの通りだと仮定して、答えます。
Windows サービスは、デフォルトの設定では「ローカル システム アカウント」で起動します。そして、普通は、どの様なファイルも、ファイルを作ったアカウント(と同等以上の権限を持ったアカウント)にしか変更する権利を与えません。いわゆる「管理者」は、Windows Vista より、「管理者になることが出来るアカウント」に格下げされています。このため、ローカル システム アカウントにしか変更出来ないファイルを変更のために開くことが出来ません。
これを解決するには、マッピングに使うファイルを Public の下に作る、明示的に他のアカウントに対して書き込み権を与える、Windows アプリケーションを昇格して実行する、といった事を行います。
Jitta@わんくま同盟- 回答としてマーク 高橋 春樹 2010年3月1日 7:04