作成したフォルダやファイルの書込み権限をプログラムから変更する方法も検索してみましたがUNIX系のコマンドばかりがひっかかってきて、Windowsのものは見つけられませんでした。
ACL の操作であれば、"ICACLS" コマンドとか、SetACL が参考になりませんか?
あと、2つのプログラムに分ける場合でも、最初に2番目のプログラムを呼び出しておいて、何かのきっかけを待たせるようにして、コピー終了後に、実際の処理を開始させると、見た目は普通になるかも ^^;。
このブラウザーはサポートされなくなりました。
Microsoft Edge にアップグレードすると、最新の機能、セキュリティ更新プログラム、およびテクニカル サポートを利用できます。
C:直下またはシステムドライブ以外のD:直下などにフォルダを作成してインストールしたソフトが起動時にエラーになります。実行ファイルを右クリックし「管理者として実行」で実行すると問題なく実行できます。また、C:Progra Files の下にインストールした場合でも問題なく実行できます。Windows 7 以前および Windows 8 RP ではどこにインストールしようと問題なく実行できていました。
いろいろ調べた結果、Windows 7 / 8 RP ではインストールしたフォルダの プロパティ>セキュリティ>グループ名またはユーザー名 に SYSTEM、Administrators、Users、Authenticated Users があります。しかし Windows 8 製品版では SYSTEM、Administrators、Users だけで Authenticated Users がありません(このためか、メモ帳でフォルダ内のテキストファイルを編集して上書き保存しようとしてもアクセス拒否されます)。ここにログインユーザーを追加してフルコントロールを与えると正常に動作します。
対象としているのは私が自作して配布しているソフトです。利用者はフォルダーのセキュリティをいじってユーザーを追加するような操作はできない人がほとんどです。インストールしたユーザー自身がアクセスできないというのはバグではないかと思いますが、インストールソフト側でなんとかできる方法はないでしょうか。
ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。
質問作成者が受け入れた回答
作成したフォルダやファイルの書込み権限をプログラムから変更する方法も検索してみましたがUNIX系のコマンドばかりがひっかかってきて、Windowsのものは見つけられませんでした。
ACL の操作であれば、"ICACLS" コマンドとか、SetACL が参考になりませんか?
あと、2つのプログラムに分ける場合でも、最初に2番目のプログラムを呼び出しておいて、何かのきっかけを待たせるようにして、コピー終了後に、実際の処理を開始させると、見た目は普通になるかも ^^;。
素人考えですが、ファイルのコピー部分と、レジストリーやメニューに登録する部分を別のプログラムにし、まずはコピーした後、次のプログラムを起動、インストーラーとしてやらなければならない残り部分を行うのでは、NG ですか?
インストールプログラムに少々手を加えて「ユーザーアカウント制御:次の不明な発行元からのプログラムにこのコンピューターへの変更を許可しますか?」というメッセージが出ない状態(つまり、ただのアプリケーション)で実行するとフォルダーは適切にコピーされて、コピーされた実行プログラムを直接ダブルクリックすれば問題なく実行できました。プログラムやアンインストーラーの登録などができませんのでインストールプログラムとしては使い物になりませんが、実行時にユーザーアカウントが変更された状態で作成されたフォルダーがダメのようです。繰り返しになりますが製品版Windows 8だけの現象です。Windows 7やWindows 8 RPではこういう現象はありません。
robocopyの/SECオプション付きでコピーっていうのはだめでしょうか?
C2H6O さんのバッチファイルっていうのと同じですか。
プログラムできる人ならコマンド呼び出しのインストーラーって簡単に作れないのでしょうか。
バッチファイルで作成したフォルダーは大丈夫でした。いっそのこと、インストールプログラムをやめ、インストールバッチにしてはどうでしょう ^^;。インストール先フォルダの問い合わせだけ、プログラムで行って、その結果を環境変数等で引き継ぐとか。フォルダ毎コピーで済むなら、これで出来そうです。
ただ、あまりにもかっこ悪いですが・・・。