LabVIEWForum.de - WinAPI Aufruf funktioniert nicht unter Win7

LabVIEWForum.de

Normale Version: WinAPI Aufruf funktioniert nicht unter Win7
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Liebe Profis in der Labview-Programmierumgebung,

ich brauche dringend eure Hilfe!!!

Ich habe ein VI, das stellt bei Programmstart die RechnerZeit auf die aktuelle GPS-Zeit ein. Das ging ohne Probleme unter Win XP, aber es funktioniert unter Win7 nicht mehr (Last error 1314). Dort wird eine WIN API-Funktion aus Kernel32-DLL aufgerufen, die unter Win7 aus Sicherheitsgründen geblockt wird.
Wie soll ich weiter gehen?
Wo bzw. welche Einstellungen im System soll ich ändern, um die Funktion (WIN API aus DLL-Datei) unter Windows 7 in Labview aufzurufen???
Das Blockdiagramm im Anhang. Es funktionierte unter XP fehlerfrei!
Hallo Lessy,

dass das VI unter XP fehlerfrei läuft, glauben wir dir gerne...
Das MS seit WinVista mächtig an den User-Rechten geschraubt hat, sollte dir aber auch bewußt sein. Also solltest du dich mit Themen wie UAC, Admin-Rechten etc. beschäftigen und die MSDN-Doku dazu durchlesen. Ist schließlich ein MS-Thema!

Manchmal hilft es auch, im Forum zu stöbern...
(02.11.2011 17:02 )Lessy schrieb: [ -> ]Liebe Profis in der Labview-Programmierumgebung,

ich brauche dringend eure Hilfe!!!

Ich habe ein VI, das stellt bei Programmstart die RechnerZeit auf die aktuelle GPS-Zeit ein. Das ging ohne Probleme unter Win XP, aber es funktioniert unter Win7 nicht mehr (Last error 1314). Dort wird eine WIN API-Funktion aus Kernel32-DLL aufgerufen, die unter Win7 aus Sicherheitsgründen geblockt wird.
Wie soll ich weiter gehen?
Wo bzw. welche Einstellungen im System soll ich ändern, um die Funktion (WIN API aus DLL-Datei) unter Windows 7 in Labview aufzurufen???
Das Blockdiagramm im Anhang. Es funktionierte unter XP fehlerfrei!

Also wenn die Call Library Node in Deinem Diagram direct der Kernelaufruf ist, dann hat das unter XP wahrscheinlich nur funktioniert weil Du als Administrator angelogt warst! Pfui!!!!

Die Veränderung der Systemzeit ist seit Windows NT4 eine priviligierte Aktion, die man nur machen darf wenn der aktuelle Prozess sich explizit die entsprechenden Rechte kurzfristig von Windows erteilen lässt. Windows bestimmt dann ob der Prozess überhaupt dazu berechtigt ist, erteilt das entsprechende Privileg, das der Prozess dann gefälligst schnellstmöglich wieder zurückgibt.

Vor Vista waren einige priviligierte Aktionen scheinbar implizit erlaubt für Administratoren, seit Vista ist das alles viel strikter. So darf auch ein Administrator nicht mehr einfach eine Applikation installieren, ohne sich zuvor noch einmal explizit authentifiziert zu haben.

Um das entsprechende Privileg zu erhalten muss man eine Anzahl weiterer Kernelfunktionen aufrufen, um SE_SYSTEMTIME_NAME zu enablen. Das wird auf LabVIEW Diagramniveau schnell sehr komplex und unübersichtlich, so dass hier eigentlich eine externe DLL angesagt wäre.

Und ein Knowledgebasearticle mit einer anderen möglichen Lösung.
(02.11.2011 18:36 )GerdW schrieb: [ -> ]Also solltest du dich mit Themen wie UAC, Admin-Rechten etc....
Ist schließlich ein MS-Thema!

Danke GerdW für den Tipp,
mit UAC und Admin-Rechten funktioniert echt gut!
Einpaar Internetlinks von mir, die anderen bei der Freischaltung des DLL-Zugriffs unter Win 7 helfen könnten:

http://www.computerbase.de/forum/showpos...stcount=22

http://www.computerbase.de/forum/showpos...stcount=43

Der Zugang zur dll-Dateien von Win 7 habe ich freigeschaltet!

Aber das Problem wurde nicht ganz erledigt, beim Massenkompilierung tritt folgender Fehler auf (ich weiß nicht, ob das zu dem Beitrag gehört Blush):

DLL wurde unter "C:\Windows\System32\kernel32.dll" erwartet, aber von "kernel32.dll" geladen.

das VI findet diese DLL-Datei wieder nicht. Die Datei kann nicht richtig geladen werden((
Woran liegt das Problem? (Im Internet habe ich wenig gefunden). Wie kann ich den Fehler beheben??
Für eure Hilfe bedanke ich mich sehr!
(04.11.2011 09:14 )Lessy schrieb: [ -> ]Aber das Problem wurde nicht ganz erledigt, beim Massenkompilierung tritt folgender Fehler auf (ich weiß nicht, ob das zu dem Beitrag gehört Blush):

DLL wurde unter "C:\Windows\System32\kernel32.dll" erwartet, aber von "kernel32.dll" geladen.

das VI findet diese DLL-Datei wieder nicht. Die Datei kann nicht richtig geladen werden((
Woran liegt das Problem? (Im Internet habe ich wenig gefunden). Wie kann ich den Fehler beheben??
Für eure Hilfe bedanke ich mich sehr!

Gehe in die Call Library Node Configuration und entferne beim Library Namen alles ausser dem DLL Namen selber. Also keinen Pfad mehr. Abschliessen, speichern, et voila!
Danke Rolf,

es funktioniert!!!

Grüß

Lessy
Referenz-URLs