W10 Netzlaufwerk und Adminrechte Vers. 1.90.331

Alle Fragen um die Programmierung, die sich sonst nicht kategorisieren lassen. Von Makro bis Codeblock, von IF bis ENDIF

Moderator: Moderatoren

Antworten
saul
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 284
Registriert: So, 26. Mär 2006 12:23

W10 Netzlaufwerk und Adminrechte Vers. 1.90.331

Beitrag von saul »

Hallo,
ich habe einen für mich erklärbaren Fehler. Meine Exe Datei habe ich unter Eigenschaften->Kompatibilität->Programm als Administrator ausführen angekreuzt damit bei W10 in die Registry geschrieben werden kann. In der Registry speichere ich das jeweile Verzeichnis, in dem ich das Programm gestartet habe, in einem OBDC Datensatz um Daten via ODBC bearbeiten zu können.
Mit

Code: Alles auswählen

appfile = alltrim(upper(curdrive()+":\"+curdir()))						
ermittle ich das Laufwerk und Verzeichnis in dem ich das Programm starte.
Ich habe ein Netzlaufwerk als Laufwerk K angelegt.
Starte ich das Programm auf einem Rechner Laufwerk erscheint Laufwerk und Verzeichnis richtig. z.B. C:\Programm\test.exe
Starte ich in diesem Fall auf dem gemappten Netzlaufwerk so erscheint nicht wie erwartet K:\Programm\test.exe sondern :\\\192.168.124.12\Programm\test.exe. Dadurch laufen andere Programmteile nicht mehr richtig.

Mache ich bei Eigenschaften->Kompatibilität->Programm als Administrator ausführen das Kreuzchen weg, so erscheint K:\Programm\test.exe aber ich kann nicht mehr in die Registry schreiben.

Ob das ein Bug ist?

mfg
Wolfgang
DelUser01

Re: W10 Netzlaufwerk und Adminrechte Vers. 1.90.331

Beitrag von DelUser01 »

Hallo Wolfgang

wenn man ein Programm mit der Option "Als Administrator ausführen" startet, wird das in einer neuen, sauberen Umgebung (Shell) gestartet. Es wird vom ausführenden User nichts übernommen. Alles was man in dieser neuen, sauberen Umgebung zusätzlich benötigt muss man dann erst einrichten. Environment-Variablen, Netzwerklaufwerke und weiteres. Z.B. indem man die LOGIN.BAT aus <PDC>\NETLOGON startet (o.ä).
Das kann man testen indem man CMD.EXE mit der Option "Als Administrator ausführen" startet. Dann eingeben: c:\> net use. Ergebnis: die Liste der Netzwerklaufwerke ist leer.
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: W10 Netzlaufwerk und Adminrechte Vers. 1.90.331

Beitrag von brandelh »

saul hat geschrieben: Sa, 07. Apr 2018 21:39 appfile = alltrim(upper(curdrive()+":\"+curdir()))
[/code]ermittle ich das Laufwerk und Verzeichnis in dem ich das Programm starte.
das ist so nicht ganz richtig !

So wird das zu der Zeit aktive Verzeichnis angezeigt, das kann das EXE Verzeichnis sein, muss es aber nicht.
Das EXE Verzeichnis wird mit AppName(.t.) zuverlässig ermittelt.

Außerdem sind die Netzwerklaufwerke unter dem Admin-Account evtl. auch anders belegt.
Gruß
Hubert
DelUser01

Re: W10 Netzlaufwerk und Adminrechte Vers. 1.90.331

Beitrag von DelUser01 »

@Hubert

Wolfgangs Aussage, dass er damit das Verzeichnis ermittelt "in dem er das Programm startet" stimmt. Er will ja nicht wissen wo das EXE liegt.
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: W10 Netzlaufwerk und Adminrechte Vers. 1.90.331

Beitrag von AUGE_OHR »

saul hat geschrieben: Sa, 07. Apr 2018 21:39 In der Registry speichere ich das jeweile Verzeichnis, in dem ich das Programm gestartet habe, in einem OBDC Datensatz um
Daten via ODBC bearbeiten zu können.
zunächst mal die Fragen zum Verständnis :

mit Windows 10 ist die Workstation gemeint wo du Registry Einträge machen willst, oder ? was für ein Server ?
dann die nächste Frage "wo" in der Registry du Zugriffe machen möchtest ?
welche ODBC Version setzt du ein ?
saul hat geschrieben: als Administrator ausführen angekreuzt
wenn eine App Administrator Rechte benötigt, was allgmein nicht der Fall ist, dann bitte per Manifest

Code: Alles auswählen

  <description>EXE need Admin rights on OS() > 5</description>
  <!-- Identify the application security requirements. -->
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
    <security>
      <requestedPrivileges>
        <requestedExecutionLevel
          level="requireAdministrator"
          uiAccess="false"/>
        </requestedPrivileges>
       </security>
  </trustInfo>
saul hat geschrieben:ermittle ich das Laufwerk und Verzeichnis in dem ich das Programm starte

Code: Alles auswählen

:\\\192.168.124.12\Programm\test.exe
also ich zweifel daran das es sich um den Server auf .12 handelt ... das ist doch sicherlich deine Workstation, oder ?!
saul hat geschrieben: Ob das ein Bug ist?
seit VISTA gibt es SMB2 und die Empfehlung SMB1 und Laufwerksbuchstaben (NET USE X: ) NICHT mehr zu verwenden sondern UNC-Path Syntax.

da man keine Laufwerksbuchstaben ( curdrive() ) verwenden sollte

Code: Alles auswählen

   appfile = alltrim(upper(curdrive()+":\"+curdir()))	
kannst du diesen Code dafür benutzen

Code: Alles auswählen

LOCAL cSrv := Getenv("COMPUTERNAME")  // Name des PC
LOCAL cUNC := "\\"+cSrv+"\"+curdir()
ABER ein Zugriff per UNC klappt nur auf "freigegebene" Ordner / Dateien

seit VISTA läuft immer der Server.EXE Dienst und "kommuniziert" mit einem (echten) Windows Server (ab 2008) über SMB2.
für Programmierer heist es das man sein Function "NET_USE" anpassen muss und ALLE DBF Dateien über "NET_USE" öffnet.

wenn man per UNC Path auf eine locale Datei/Ordner zugreifen will geht das nur wenn der Ordner "ge-Shared" ist.
das ist ein Teil von SMB2 das der (echte) Server "alles in Netzwerk" mitbekommt und es anderen Clients "mitteilen" (SMB = Server Message Block) kann.

Tip : RAMDISK und freigeben

man kann natürlich auch auf der Workstation den Server.EXE Dienst abschalten was NICHT zu empfehlen ist [-X

---

das Verhalten vom Explorer bei "ge-mappedten" Laufwerken ist so gewollt damit nicht mehr die alten SMB1 LAN-Manager- oder NetBIOS-Protokoll genutzt werden. bin man gespannt wohin das M$ "auslagert" wenn es den Explorer unter POLARIS nicht mehr gibt :?:
gruss by OHR
Jimmy
saul
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 284
Registriert: So, 26. Mär 2006 12:23

Re: W10 Netzlaufwerk und Adminrechte Vers. 1.90.331

Beitrag von saul »

Guten Morgen,
den Hinweis vom Roland konnte ich nicht nachvollziehen. Bei mir sind die Netzwerklaufwerke vorhanden und lassen sich auch benutzen.
Unbenannt0.pdf
(13.64 KiB) 196-mal heruntergeladen
Ich werde aber versuchen UNC Pfade zu verwenden. Appname() funktioniert bei mir auch richtig.
Wenn ich in die Registry schreiben könnte, so wär mein jetziges Problem behoben.
mit Windows 10 ist die Workstation gemeint wo du Registry Einträge machen willst, oder ? was für ein Server ?
dann die nächste Frage "wo" in der Registry du Zugriffe machen möchtest ?
welche ODBC Version setzt du ein ?
Richtig, ich möchte in die Registry vom Rechner schreiben auf dem ich das Programm gestartet habe, einem W10 64 Bit client. Auf dem Server (Windows Home Server 2011) liegen nur die Daten. Ich benutze den Treiber Advantage StreamlineSQL ODBC Version 11.10.00.24 da mit diesem die Umlaute richtig behandelt werden. Ich möchte den Eintrag DataDirectory aus dem Programm heraus ändern.
Unbenannt1.pdf
(177.77 KiB) 199-mal heruntergeladen
Unbenannt2.pdf
(79.97 KiB) 194-mal heruntergeladen
Bei einem 32Bit System stehen die ODBC Daten natürlich an einem anderen Ort.

Schönen Sonntag
Wolfgang
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: W10 Netzlaufwerk und Adminrechte Vers. 1.90.331

Beitrag von AUGE_OHR »

zunächst sehe ich
Windows 10.0.15063
was schon längst nicht mehr aktuelle ist d.h. das Verhalten könnte völlig anders sein mit einer aktuellen Version.

als Remote wird tatsächlich 192.168.121.12 angezeigt ...
einen "Windows Home Server 2011" kenne ich gar nicht ... ich dachte WHS wurde eingestellt

zum Registry Eintrag \ODBC\ODBC.INI -> rechte Maustaste -> Berechtigung : ein User hat nur "lesen" kein "Vollzugriff" :!:
gruss by OHR
Jimmy
DelUser01

Re: W10 Netzlaufwerk und Adminrechte Vers. 1.90.331

Beitrag von DelUser01 »

Hallo Wolfgang

möglicher Weise hast Du Dein System schon angepasst/verbogen und Du siehst die Netzwerklaufwerke inzwischen im CMD. Aber ob as auch für jede EXE gilt welche mit Adminrechten gestartet wird?

Aber über das Thema gibt es jede Menge Beiträge im Internet die darauf hinweisen, dass bei "Als Administrator ausführen" erst einmal keine Netzwerklaufwerke da sind. Und es ist auch so...

Microsoft:
https://support.microsoft.com/de-de/hel ... -uac-is-co
https://support.microsoft.com/en-us/hel ... -uac-is-co

Nachtrag
Bevor Missverständnisse entstehen: das gilt nur für lokal gemapte Netzwerklaufwerke, nicht für UNC-Pfade.
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: W10 Netzlaufwerk und Adminrechte Vers. 1.90.331

Beitrag von brandelh »

Wenn man dem Administrator bei der Anmeldung die Netzwerklaufwerke mapped (z.B. Verbindung wieder herstellen) können die schon da sein.

Zunächst bleibt aber die Frage, ob du das Verzeichnis der EXE Datei willst, oder das aktuell eingestellte.

Je nach Startart ist das bei mir nicht das EXE Verzeichnis und natürlich könnte man dies in der Anwendung selbst auch geändert haben.
Gruß
Hubert
saul
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 284
Registriert: So, 26. Mär 2006 12:23

Re: W10 Netzlaufwerk und Adminrechte Vers. 1.90.331

Beitrag von saul »

Hallo,
ich will das Verzeichnis, in dem ich die EXE gestartet habe. Das funktioniert mit Appname() besser als mit meiner Art, da es öfter und anderen Bedingungen richtig berücksichtigt.
Mit dem Hinweis auf die Möglichkeit der Berechtigungsveränderung in der Registry ist mein Problem erstmal gelöst. Danke Euch dafür.

Schönes Restsonntag
Wolfgang
Antworten