9

Windows 7 32 ビット マシンから複数の POS 端末にリンクする VB6 アプリケーションがあります。POS 端末は Windows 7 マシンにマッピングされており、Windows 7 マシンからエクスプローラーまたはコマンドライン/シェル経由で POS 端末にアクセスできます。

アプリケーションは ADO 2.8 に更新され、ソース コードがなくなった他のすべてのコントロールとコンポーネントが書き直されました。いくつかの厄介な問題の後、アプリケーションを Windows 7 コンピューターでエラーなしで再コンパイルすることができました。

さて、問題が発生します。VB6 アプリケーションは、マップされたドライブを表示またはナビゲートできません! UAC 設定をいじってみました。アプリを Windows XP SP3 モードで実行するように設定しました。管理者として実行してみました。これらのこと (およびこれらの多くの順列) はどれも機能しません。

これを機能させる方法について何か提案はありますか?

4

5 に答える 5

11

このレジストリ設定を追加すると、問題が解決しました: http://technet.microsoft.com/en-us/library/ee844140%28v=ws.10%29.aspx

この問題を回避するには、EnableLinkedConnections レジストリ値を構成します。この値により、Windows Vista と Windows 7 は、フィルター処理されたアクセス トークンと Administrators グループのメンバーの完全な管理者アクセス トークンの間でネットワーク接続を共有できます。このレジストリ値を構成した後、LSA は、ネットワーク リソースがアクセス トークンにマップされている場合、現在のユーザー セッションに関連付けられている別のアクセス トークンがあるかどうかを確認します。LSA は、リンクされたアクセス トークンがあると判断した場合、リンクされた場所にネットワーク共有を追加します。EnableLinkedConnections レジストリ値を構成するには

  1. [スタート] をクリックし、[プログラムとファイルの開始] ボックスに「regedit」と入力して、Enter キーを押します。

  2. レジストリ サブキー HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System を見つけて右クリックします。

  3. [新規] をポイントし、[DWORD 値] をクリックします。

  4. EnableLinkedConnections と入力し、Enter キーを押します。

  5. [EnableLinkedConnections] を右クリックし、[変更] をクリックします。

  6. [値のデータ] ボックスに「1」と入力し、[OK] をクリックします。

  7. レジストリ エディターを終了し、コンピューターを再起動します。

于 2012-06-25T17:19:06.097 に答える
5

カジュアルなドライブ マッピングはユーザーごとであり、UAC システムでは管理者グループのユーザーが 2 つの個別のコンテキスト (トークンごとに 1 つ: SU と昇格) を持っているため、問題が発生していると思います。

システム ユーザー (NT Authority\System) の下で行われる、システム レベルのドライブ マッピングのようなものがあります。このアカウントでドライブをマップし、永続的にマップすると、すべてのユーザーがそのマッピングを表示および使用できます (そこにあるファイルに対する通常のアクセス権に従います)。

これを行う通常の方法は、ドメイン レベルの GPO (グループ ポリシー オブジェクト) を使用することです。これは、企業の管理された LAN 環境の場合、ローカル ボックス ジョッキーを買収することを意味します。

ワークグループ マシンでこれを行う 1 つの方法は、昇格したコマンド プロンプトから AT コマンドを使用して、文字をシステムとしてマップすることです。

at 8:53 am "net use m: \\MediaShare\MyLibrary
    ThePW /user:MediaShare\TheUser /persistent:yes > nul"

リモート サーバーは MediaShare、ユーザーは TheUser、パスワードは ThePW で、午前 8 時 53 分は 1 分から 2 分先で、これを誤って明日にスケジュールしないようにします。

しかし、Vista 以降ではセッション 0 の分離が原因で失敗します。

したがって... Run CMD.exe as Local System Accountで3 番目の代替手段を使用します

私はそれがあなたがここにいるものだと信じています。

于 2012-01-11T14:14:54.373 に答える
0

あなたがこれを理解したことがあるかどうかはわかりませんが、私にとっては ChDir コマンドでした (上記のレジストリ修正があっても)。

私は自分のコードに持っていました

ChDir "P:\Temp\VidCap\Cam1\" 'I almost never use ChDir Open "list.txt" For Output As #1

そして、すべてのVB6組み込みファイルコマンドは、操作、エラー、何もなくてもまっすぐに見えました. 私はパスを明示的に持つことで解決しました(私のコードでは文字列でしたが、明示的に持つことができました):

dd = "P:\Temp\VidCap\Cam1\" Open dd & "list.txt" For Output As #1 期待どおりに動作します。

お役に立てれば

H

于 2015-06-25T20:46:50.177 に答える